日期时间功能

时间标准

名称                备注
GMT        格林威治标准时间(Greenwich Mean Time)
UTC        世界标准时间(Coordinated Universal Time)
CST        可认为是本地时间(Central Standard Time)
DST        夏令时(Daylight Saving Time),农业上使用,不用关注
ISO8601    规定时间的表达格式

GMT与UTC基本无差别,UTC的精度相对更高一些,GMT来自天文学。

以本初子午线(0度经线)为起点,将全球划分为24个时区。

说明:改图为借用,版权归原著所有。

时差的计算公式: 本地时间=UTC + 时区差
        时区差东为正,西为负(比如东八区记为+0800,西五区记为-0500)

 ISO规范:

        如果时间是UTC则在时间后面加Z表示,其它时区时间则将与UTC的偏移量附加到时间后面。

        时间样例:

                UTC时间:20180703T224426Z        

                UTC时间:2018-07-03T22:44:26Z

                本地时间:09:30+08:00  

Clickhouse时区处理

查看系统时间

[root@localhost ~]# timedatectl
      Local time: Wed 2022-01-26 11:27:13 CST
  Universal time: Wed 2022-01-26 03:27:13 UTC
        RTC time: Wed 2022-01-26 03:34:23
       Time zone: Asia/Shanghai (CST, +0800)
     NTP enabled: n/a
NTP synchronized: no
 RTC in local TZ: no
      DST active: n/a

查看ClickHouse当前时间

         时间查询正常,当前无须修改。

使用DataGrap作为ClickHouse的客户端时区异常的处理:

 修改ClickHouse时区方法

1.修改配置文件的<timezone>节点       
        vim /etc/clickhouse-server/config.xml

        <timezone>Asia/Shanghai</timezone>
2.重启
        service clickhouse-server restart

涉及日期时间的数据类型:

数据类型精度存储空间(Byte)备注样例
Date日期2表示从 1970-01-01 (无符号) 到当前的日期值

min:1970-01-01

max:2015-1231

DateTime41970-01-01 00:00:00
DateTime64亚秒Int64类型2020-01-01 05:00:01.

时间操作:

时间函数
DateTime64(precision, [timezone])

    precision:决定时间刻度的分辨率(最大为9)
    timezone:指定表的存储时区,不指定为默认时区

将日期时间作为integer类型插入时,它会被视为适当缩放的Unix时间戳(UTC)。
当把字符串作为日期时间插入时,它会被赋予时区信息。

样例1

CREATE TABLE dt
(
    `timestamp` DateTime64(3, 'Europe/Moscow'),
    `event_id` UInt8
)
ENGINE = TinyLog;

INSERT INTO dt Values (1546300800000, 1), ('2019-01-01 00:00:00', 2);



说明:
    1.Europe/Moscow为东三区
    2.1546300800000表示2019-01-01 00:00:00(UTC)

                        

样例2

CREATE TABLE dt2
(
    `timestamp` DateTime64(9),
    `event_id` UInt8
)
ENGINE = TinyLog;

INSERT INTO dt2 Values (1546300800000, 1), ('2019-01-01 00:00:00', 2);



说明:
    1.默认时区为东八区
    2.1546300800000表示2019-01-01 00:00:00(UTC)

                          

常用的时间函数

获取当前时间

 SELECT now()

         ​​​​​​​        

获取当前日期

select today()

               

 类型转换

字符串转时间
    toDateTime('YYYY-MM-DD HH:mm:ss','xxx')

        YYYY-MM-DD HH:mm:ss    字符串表达的时间
        xxx                    时区,省略时采用系统时区


时间转日期
    toDate(time,'xxx')
        time:        时间
        xxx:         时区,省略时采用系统时区


时间转Int

    toUInt64(toDateTime('YYYY-MM-DD HH:mm:ss'))
    toUnixTimestamp('YYYY-MM-DD HH:mm:ss') 
    toUnixTimestamp(toDateTime('YYYY-MM-DD HH:mm:ss'))
    

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值