1、unix 时间转 timestamp
from_unixtime(unixtime) --> timestamp
以时间戳的形式返回UNIX时间戳unixtime(10位)
例如:
unixtime = 1696089626000
from_unixtime(unixtime* 0.001) --> Sun Oct 01 00:00:26 +0800 2023
from_unixtime(time_unix) --> timestamp with time zone
将UNIX时间戳unixtime(10位)作为带时区的时间戳返回,使用小时和分钟作为时区偏移量
例如:
unixtime = 1696089626000,
from_unixtime(unixtime, 8, 0) --> Sun Oct 01 00:00:26 +0800 2023
from_unixtime(unixtime, string)--> timestamp with time zone
使用时区字符串返回UNIX时间戳unixtime作为带时区的时间戳
例如:
unixtime = 1696089626000
from_unixtime(unixtime* 0.001,'Asia/Shanghai') --> Sun Oct 01 00:00:26 +0800 2023
2、current_date --> date 返回当前日期
SELECT current_date 》》 Tue Nov 07 00:00:00 +0800 2023
3、current_time -> time with time zone 返回当前时间(只有小时分钟秒是对的,年月日不正确) 》》 Thu Jan 01 19:18:40 +0800 1970
4、 current_timestamp -> timestamp with time zone 返回当前时间戳 》》 Tue Nov 07 19:30:45 +0800 2023
5、localtime -> time with time zone 返回当前时间(测试出来和current_time返回值一样,(只有小时分钟秒是对的,年月日不正确)) 》》 Thu Jan 01 19:34:20 +0800 1970
6、localtimestamp -> timestamp with time zone 返回当前时间戳(测试出来和current_timestamp返回值一样) 》》 Tue Nov 07 19:30:45 +0800 2023
7、 to_unixtime(timestamp) --> double(10位整数) 以UNIX时间戳的形式返回时间戳
SELECT to_unixtime(current_timestamp) as "t3" --》》 1699357347.115
8、date_trunc(unit, x) -- > 把时间x 按unit精度截断,
x 可以是 current_date、current_time、current_timestamp、localtime、localtimestamp, 但注意unit 要视x 的取值 进行配置, 比如x 没有月份概念,unit不能用month
unit 可以是 second、 minute、hour、day、week等
9、date_add(unit, value, timestamp) --> 以unit为单位, 将value 加到 timestamp
unit 说明
millisecond 毫秒数
second 秒数
minute 分钟数
hour 小时数
day 天数
week 周数
month 月数
quarter 季数
year 年数
current_timestamp --> Fri Nov 09 11:18:09 +0800 2023
SELECT date_add('day', 1, current_timestamp) --> Fri Nov 10 11:18:09 +0800 2023 即向后加1天
SELECT date_add('week', 1, current_timestamp) --> Thu Nov 16 11:22:27 +0800 2023 即向后加1周
10、date_diff(unit, timestamp1, timestamp2) --> 以unit为单位, 返回两个时间的间隔
SELECT date_diff('second', date_add('minute', 60, localtime), localtime) -- > 按秒为单位,返回两个时间差,即 3600秒
11、格式化/反格式化函数
分类符 说明
%Y 年份,数字,四位数
%y 年份,数字,两位数
%m 月份序号(01 .. 12)
%M 月份名称(January .. December)
%d 一个月中的某一天序号(01 .. 31)
%H 小时(00 .. 23)
%h 小时(01 .. 12)
%i 分钟 (00 .. 59)
%S 秒(00 .. 59)
%s 秒(00 .. 59)
格式化
date_format(timestamp, format) → varchar
SELECT date_format(CURRENT_TIMESTAMP, '%y/%m/%d %h:%i:%s') ---> 2024/01/16 11:41:35
反格式化
date_parse(string, format) → timestamp 使用格式将字符串解析为时间戳, format 和string的格式一样,但年月日时分秒等每个部分必须以% 开头(
SELECT date_parse('2024/01/16', '%Y/%m/%d') ---> Tue Jan 16 00:00:00 +0800 2024
12、 format_datetime(timestamp, format) → varchar 将时间戳格式化为字符串
format_datetime(CURRENT_TIMESTAMP, 'yyyy-MM-DD HH:mm:ss') ---> 2024-01-16 13:49:01
13、 parse_datetime(string, format) → timestamp with time zone 使用格式将字符串解析为带时区的时间戳,format 和string的格式一样
parse_datetime('2024-01-16 13:49:01', 'yyyy-MM-DD HH:mm:ss') --- > Tue Jan 16 13:49:01 +0800 2024