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