【presto】时间函数汇总
目录
- 获取当前日期:current_date()
- 获取当前时间:current_time()
- 获取当前日期和时间:current_timestamp()
- 获取当前日期和时间:now()
- 获取当前时区:current_timezone()
- 字符串转时间戳:cast(string, timestamp)
- 字符串转时间戳:date_parse(string, fromat)
- bigint转时间戳
- 时间戳转biging
- 时间戳格式化: format_datetime(timestamp,format)
- 时间戳取年月日
- 字符串转年月日
- bigint转年月日
- 时间间隔:date_diff(unit, timestamp1, timestamp2)
- 几天前后几天后:interval、date_add
- 月初、年初、周一和季度第一天:date_trunc(unit, timestamp)
- 时间提取函数 extract、year、month、day
- 日期是周几:day_of_week()
日期时间运算符
运算符 | 示例 | 结果 |
+ | date ‘2012-08-08’ + interval ‘2’ day ) | 2012-08-10 |
+ | time ‘01:00’ + interval ‘3’ hour | 04:00:00.000 |
+ | timestamp ‘2012-08-08 01:00’ + interval ‘29’ hour | 2012-08-09 06:00:00.000 |
+ | timestamp ‘2012-10-31 01:00’ + interval ‘1’ month | 2012-11-30 01:00:00.000 |
+ | interval ‘2’ day + interval ‘3’ hour | 2 03:00:00.000 |
+ | interval ‘3’ year + interval ‘5’ month | 3-5 |
- | date ‘2012-08-08’ - interval ‘2’ day | 2012-08-06 |
- | time ‘01:00’ - interval ‘3’ hour | 22:00:00.000 |
- | dtimestamp ‘2012-08-08 01:00’ - interval ‘29’ hour | 2012-08-06 20:00:00.000 |
- | timestamp ‘2012-10-31 01:00’ - interval ‘1’ month | 2012-09-30 01:00:00.000 |
- | interval ‘2’ day - interval ‘3’ hour | 1 21:00:00.000 |
- | interval ‘3’ year - interval ‘5’ month | 2-7 |
时区转换
运算符:AT TIME ZONE
,用于设置一个时间戳的时区:
select timestamp ‘2022-03-17 01:00 UTC’ AT TIME ZONE ‘America/Los_Angeles’;
2022-03-17 09:00:00
获取当前日期:current_date()
获取当前时间:current_time()
获取当前日期和时间:current_timestamp()
获取当前日期和时间:now()
获取当前时区:current_timezone()
字符串转时间戳:cast(string, timestamp)
字符串转时间戳:date_parse(string, fromat)
注意: 字符串格式和format格式需保持一致。
以下为错误示例:
- 1
- 2
bigint转时间戳
时间戳转biging
时间戳格式化: format_datetime(timestamp,format)
时间戳取年月日
字符串转年月日
注意: 格式不同时date、to_date无法使用
bigint转年月日
时间间隔:date_diff(unit, timestamp1, timestamp2)
函数支持如下所列的间隔单位:
Unit | Description |
second | Seconds |
minute | Minutes |
hour | Hours |
day | Days |
week | Weeks |
month | Months |
quarter | Quarters of a year |
year | Years |
注意: 与hive差异!!!
几天前后几天后:interval、date_add
月初、年初、周一和季度第一天:date_trunc(unit, timestamp)
函数 date_trunc支持如下单位:
单位 | Example Truncated Value |
second | 2001-08-22 03:04:05.000 |
minute | 2001-08-22 03:04:00.000 |
hour | 2001-08-22 03:00:00.000 |
day | 2001-08-22 00:00:00.000 |
week | 2001-08-20 00:00:00.000 |
month | 2001-08-01 00:00:00.000 |
quarter | 2001-07-01 00:00:00.000 |
year | 2001-01-01 00:00:00.000 |
上面的例子使用时间戳: 2001-08-22 03:04:05.321 作为输入。
时间提取函数 extract、year、month、day
日期是周几:day_of_week()