**Example**

Query:

```` sql
SELECT formatDateTime(toDate('2010-01-04'), '%Q')
````

Result:

```` sql
┌─formatDateTime(toDate('2010-01-04'), '%Q')─┐
│ 1                                          │
└────────────────────────────────────────────┘
````


{
private:
    
    template <typename F>
    static bool castType(const IDataType * type, F && f)
    {
        return castTypeToEither<
            DataTypeInt8,
            DataTypeUInt8,
            DataTypeInt16,
            DataTypeUInt16,
            DataTypeInt32,
            DataTypeUInt32,
            DataTypeInt64,
            DataTypeUInt64>(type, std::forward<F>(f));
    }
    template <typename Time>
    class Action
    {
    public:
        using Func = void (*)(char *, Time, const DateLUTImpl &);
        Func func;
        size_t shift;
        explicit Action(Func func_, size_t shift_ = 0) : func(func_), shift(shift_) {}