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
|
|
|
{
|
2013-08-11 03:40:14 +00:00
|
|
|
writeDateText(DayNum_t(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
|
|
|
{
|
2013-08-11 03:40:14 +00:00
|
|
|
DayNum_t x;
|
2011-08-07 02:08:22 +00:00
|
|
|
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
|
|
|
}
|
2013-05-16 12:52:09 +00:00
|
|
|
|
|
|
|
void serializeTextJSON(const Field & field, WriteBuffer & ostr) const
|
|
|
|
{
|
|
|
|
writeChar('"', ostr);
|
|
|
|
serializeText(field, ostr);
|
|
|
|
writeChar('"', ostr);
|
|
|
|
}
|
2010-05-20 19:29:04 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
}
|