@@ -59,6 +59,63 @@ ItemView ColumnDate::GetItem(size_t index) const {
5959
6060
6161
62+ ColumnDate32::ColumnDate32 ()
63+ : Column(Type::CreateDate32())
64+ , data_(std::make_shared<ColumnUInt32>())
65+ {
66+ }
67+
68+ void ColumnDate32::Append (const std::time_t & value) {
69+ // / TODO: This code is fundamentally wrong.
70+ data_->Append (static_cast <uint16_t >(value / std::time_t (86400 )));
71+ }
72+
73+ void ColumnDate32::Clear () {
74+ data_->Clear ();
75+ }
76+
77+ std::time_t ColumnDate32::At (size_t n) const {
78+ return static_cast <std::time_t >(data_->At (n)) * 86400 ;
79+ }
80+
81+ void ColumnDate32::Append (ColumnRef column) {
82+ if (auto col = column->As <ColumnDate32>()) {
83+ data_->Append (col->data_ );
84+ }
85+ }
86+
87+ bool ColumnDate32::Load (InputStream* input, size_t rows) {
88+ return data_->Load (input, rows);
89+ }
90+
91+ void ColumnDate32::Save (OutputStream* output) {
92+ data_->Save (output);
93+ }
94+
95+ size_t ColumnDate32::Size () const {
96+ return data_->Size ();
97+ }
98+
99+ ColumnRef ColumnDate32::Slice (size_t begin, size_t len) const {
100+ auto col = data_->Slice (begin, len)->As <ColumnUInt16>();
101+ auto result = std::make_shared<ColumnDate32>();
102+
103+ result->data_ ->Append (col);
104+
105+ return result;
106+ }
107+
108+ void ColumnDate32::Swap (Column& other) {
109+ auto & col = dynamic_cast <ColumnDate32 &>(other);
110+ data_.swap (col.data_ );
111+ }
112+
113+ ItemView ColumnDate32::GetItem (size_t index) const {
114+ return data_->GetItem (index);
115+ }
116+
117+
118+
62119ColumnDateTime::ColumnDateTime ()
63120 : Column(Type::CreateDateTime())
64121 , data_(std::make_shared<ColumnUInt32>())
0 commit comments