ClickHouse/dbms/include/DB/DataTypes/DataTypeDate.h

59 lines
1.2 KiB
C
Raw Normal View History

2011-08-07 02:08:22 +00:00
#pragma once
2010-06-04 18:25:25 +00:00
#include <DB/IO/ReadHelpers.h>
#include <DB/IO/WriteHelpers.h>
2010-05-20 19:29:04 +00:00
#include <DB/Columns/ColumnsNumber.h>
#include <DB/DataTypes/IDataTypeNumberFixed.h>
namespace DB
{
2011-08-07 02:08:22 +00:00
class DataTypeDate : public IDataTypeNumberFixed<UInt16, ColumnUInt16>
2010-05-20 19:29:04 +00:00
{
public:
2011-08-07 02:08:22 +00:00
DataTypeDate() {}
2010-05-20 19:29:04 +00:00
std::string getName() const { return "Date"; }
2011-08-09 19:19:00 +00:00
DataTypePtr clone() const { return new DataTypeDate; }
2010-05-20 19:29:04 +00:00
2010-06-04 18:25:25 +00:00
void serializeText(const Field & field, WriteBuffer & ostr) const
2010-05-20 19:29:04 +00:00
{
2011-08-15 00:55:43 +00:00
writeDateText(Yandex::DayNum_t(boost::get<UInt64>(field)), ostr);
2010-05-20 19:29:04 +00:00
}
2010-06-04 18:25:25 +00:00
void deserializeText(Field & field, ReadBuffer & istr) const
2010-05-20 19:29:04 +00:00
{
2011-08-07 02:08:22 +00:00
Yandex::DayNum_t x;
readDateText(x, istr);
2011-08-15 00:55:43 +00:00
field = static_cast<UInt64>(x);
2010-05-20 19:29:04 +00:00
}
2010-06-04 18:25:25 +00:00
void serializeTextEscaped(const Field & field, WriteBuffer & ostr) const
2010-05-20 19:29:04 +00:00
{
serializeText(field, ostr);
}
2010-06-04 18:25:25 +00:00
void deserializeTextEscaped(Field & field, ReadBuffer & istr) const
2010-05-20 19:29:04 +00:00
{
deserializeText(field, istr);
}
2012-08-26 06:48:39 +00:00
void serializeTextQuoted(const Field & field, WriteBuffer & ostr) const
2010-05-20 19:29:04 +00:00
{
2010-06-04 18:25:25 +00:00
writeChar('\'', ostr);
2010-05-20 19:29:04 +00:00
serializeText(field, ostr);
2010-06-04 18:25:25 +00:00
writeChar('\'', ostr);
2010-05-20 19:29:04 +00:00
}
2012-08-26 06:48:39 +00:00
void deserializeTextQuoted(Field & field, ReadBuffer & istr) const
2010-05-20 19:29:04 +00:00
{
2010-06-04 18:25:25 +00:00
assertString("'", istr);
2010-05-20 19:29:04 +00:00
deserializeText(field, istr);
2010-06-04 18:25:25 +00:00
assertString("'", istr);
2010-05-20 19:29:04 +00:00
}
};
}