本文总结一下Presto SQL日期时间比较常用的处理:

1. 特定的日期时间值

select

    current_date, --当前的日期
    
    current_time, --当前的时间
    
    current_timestamp, --当前的时间戳
    
    date'2021-09-01', --给定的日期
    
    time'12:30:00', --给定的时间
    
    timestamp'2021-09-01 12:30:00' --给定的时间戳

需要输入日期时间时,使用前缀date、timestamp、time就会将输入的字符串识别为日期时间。

2. 常用的日期时间处理

select

    current_date, --当前日期
    
    current_date - interval '1' day, --往前推1天
    
    current_date + interval '3' day, --往后推3天
    
    date_add('day', -1, current_date), --往前推1天
    
    date_add('day', 3, current_date), --往后推3天
    
    date_trunc('month', current_date), --当月第1天
    
    date_trunc('month', current_date) - interval '1' month, --前1月第1天
    
    date_trunc('month', current_date) - interval '1' day, --前1月最后1天
    
    date_trunc('week', current_date), --当周第1天
    
    date_diff('day', date'2021-09-01', date'2021-09-23'), --相差天数
    
    to_char(current_date, 'yyyy-mm'), --将日期时间值转换为字符串月份
    
    to_char(current_date, 'yyyymmdd'), --将日期时间值转换为字符串日期
    
    date(date_parse('20210901', '%Y%m%d')), --将日期字符串转换为日期值
    
    date('2021-09-01'), --将日期字符串yyyy-mm-dd转换为日期值
    
    cast('2021-09-01' as date) --将日期字符串yyyy-mm-dd转换为日期值

date_trunc(unit, x) → [same as input]

将日期时间值按照给定的单位进行转换,输出的字段类型和输入的字段类型是一样的。

date_add(unit, value, timestamp) → [same as input]

将日期时间值按照给定的单位和数值进行加减, 输出的字段类型和输入的字段类型是一样的 。

date_diff(unit, timestamp1, timestamp2) → bigint

计算2个日期时间相差多少数量的指定单位,输出的字段类型为 bigint。

date_parse(string, format) → timestamp

将字符串解析为日期时间值,输出的字段类型为 timestamp。


date_trunc()、date_add()、date_diff()等日期时间函数的 unit 参数可以取:second 秒,  minute 分,  hour 小时,  day 日,  week 周,  month 月,  quarter 季度,  year 年,其中 hour  day  week  month 比较常用。

3. 偶尔用的日期时间处理

其他偶尔会用到的还有:hour()、day()、week()、month()、year()、day_of_week() 等。


原创文章,欢迎转载,转载请注明出处并留下原文链接。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注