2011-08-07 02:08:22 +00:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#include <DB/IO/ReadHelpers.h>
|
|
|
|
#include <DB/IO/WriteHelpers.h>
|
|
|
|
|
|
|
|
#include <DB/Columns/ColumnsNumber.h>
|
|
|
|
#include <DB/DataTypes/IDataTypeNumberFixed.h>
|
|
|
|
|
|
|
|
|
|
|
|
namespace DB
|
|
|
|
{
|
|
|
|
|
|
|
|
class DataTypeDateTime : public IDataTypeNumberFixed<UInt32, ColumnUInt32>
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
DataTypeDateTime() {}
|
|
|
|
|
|
|
|
std::string getName() const { return "DateTime"; }
|
2011-08-09 19:19:00 +00:00
|
|
|
DataTypePtr clone() const { return new DataTypeDateTime; }
|
2011-08-07 02:08:22 +00:00
|
|
|
|
|
|
|
void serializeText(const Field & field, WriteBuffer & ostr) const
|
|
|
|
{
|
2013-01-05 20:03:19 +00:00
|
|
|
writeDateTimeText(get<UInt64>(field), ostr);
|
2011-08-07 02:08:22 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
void deserializeText(Field & field, ReadBuffer & istr) const
|
|
|
|
{
|
|
|
|
time_t x;
|
|
|
|
readDateTimeText(x, istr);
|
2011-08-07 03:42:36 +00:00
|
|
|
field = NearestFieldType<UInt32>::Type(x);
|
2011-08-07 02:08:22 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
void serializeTextEscaped(const Field & field, WriteBuffer & ostr) const
|
|
|
|
{
|
|
|
|
serializeText(field, ostr);
|
|
|
|
}
|
|
|
|
|
|
|
|
void deserializeTextEscaped(Field & field, ReadBuffer & istr) const
|
|
|
|
{
|
|
|
|
deserializeText(field, istr);
|
|
|
|
}
|
|
|
|
|
2012-08-26 06:48:39 +00:00
|
|
|
void serializeTextQuoted(const Field & field, WriteBuffer & ostr) const
|
2011-08-07 02:08:22 +00:00
|
|
|
{
|
|
|
|
writeChar('\'', ostr);
|
|
|
|
serializeText(field, ostr);
|
|
|
|
writeChar('\'', ostr);
|
|
|
|
}
|
|
|
|
|
2012-08-26 06:48:39 +00:00
|
|
|
void deserializeTextQuoted(Field & field, ReadBuffer & istr) const
|
2011-08-07 02:08:22 +00:00
|
|
|
{
|
|
|
|
assertString("'", istr);
|
|
|
|
deserializeText(field, istr);
|
|
|
|
assertString("'", istr);
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
}
|