1.字符串转时间类型(TO_TIMESTAMP、TIMESTAMP和UNIX_TIMESTAMP)
select TO_TIMESTAMP('2021-12-03 10:59:45.957') a;
输出: `2021-12-03 10:59:45.957`
select TIMESTAMP '2021-12-03 10:59:45.957' a;
输出: `2021-12-03 10:59:45.957`
select UNIX_TIMESTAMP ('2021-12-03 10:59:45.957') a;
输出:`1638500385`
2.时间类型转字符串(DATE_FORMAT和FROM_UNIXTIME)
select DATE_FORMAT(TO_TIMESTAMP(1596702949000), 'yyyy-MM-dd HH:mm:ss') a;
输出:2020-08-06 16:35:49
select DATE_FORMAT('2020-08-06 16:35:49', 'yyyy-MM-dd HH:mm:ss', 'yyyy/MM/dd HH:mm:ss') a;
输出:2020/08/06 16:35:49
select FROM_UNIXTIME(1596702949000/1000) a;
输出:2020-08-06 16:35:49
3.时间相关计算函数
当参数为TIMESTMP时,EXTRACT、FLOOR、CEIL和DATE_DIFF等函数输出结果取决于自定义的时区。
-- 1521503999000 2018-03-19T23:59:59+0000, 2018-03-20T07:59:59+0800
EXTRACT(DAY FROM TO_TIMESTAMP(1521503999000))
-- 输出: `20`,表示东八区的20日。
4.当前时间函数
当前时间函数包括LOCALTIMESTAMP()
、CURRENT_TIMESTAMP()
、NOW()
和UNIX_TIMESTAMP()
等。
-- 当前时间是2020-08-03 10:59:45 (Asia/Shanghai)
LOCALTIMESTAMP
-- 输出: `2020-08-03 10:59:45.957`。
CURRENT_TIMESTAMP
-- 输出: `2020-08-03 10:59:45.957`。
NOW()
-- 输出: `1596423585`。
UNIX_TIMESTAMP()
-- 输出: `1596423585`。
TO_TIMESTAMP( FROM_UNIXTIME(ts) )
FROM_UNIXTIME 是系统内置的时间函数,用来将一个整数(秒数)转换成 “YYYY-MM-DD hh:mm:ss”格式(默认,也可以作为第二个 String 参数传入)的日期时间 字符串(date time string);
然后再用 TO_TIMESTAMP 将其转换成 Timestamp
select FROM_UNIXTIME(1596423585,'yyyy-MM-dd HH:mm:ss') a;
select TO_TIMESTAMP(FROM_UNIXTIME(1596423585),'yyyy-MM-dd HH:mm:ss') a;