[presto(trino)]多种日期写法

本文介绍了Presto(Trino)中的日期处理,包括如何显示当前日期、转换时间戳、精确到毫秒并显示时区、获取前一天日期、字符串与时间的相互转换以及使用date_add和date_diff计算时间偏移和差值。此外,还展示了如何使用date_trunc获取月初和年初,并处理不规范日期格式的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. 显示当前日期
select current_date 
  1. hive上当前日期转成presto上的timestamp
select  DATE_PARSE(cast(CURRENT_DATE as VARCHAR),'%Y-%m-%d')
  1. 精确到毫秒,并显示时区
select now() 
  1. 显示前一天
select current_date - interval '1' day 
  1. 字符串转时间
select date_parse('20210512','%Y%m%d') 
  1. 时间转字符串
select date_format(current_date -interval '1' day,'%Y-%m-%d %T')
  1. 计算时间的函数
date_add(unit,value,timestamp)

其中unit为单位,可使用的有’day’,‘week’,'month’等等;value是偏移量,正数表示计算未来的时间,负数则是历史时间;

例:select date_add(‘week’,10,current_date) 显示 2021-10-14 select date_add(‘month’,-3,cast(‘2021-04-01’ as date)) 显示 2021-01-01

  1. 计算时间差
   date_diff(unit,timestamp1,timestamp2)

例:

  • select date_diff(‘day’,cast(‘2021-08-01’ as date),date_parse(‘20210512’,’%Y%m%d’)) 显示 -81
  • select date_diff(‘month’,cast(‘2021-08-01’ as date),date_parse(‘20210512’,’%Y%m%d’)) 显示 -2
  • select date_diff(‘year’,cast(列名1 as date),cast (列名2 as date))
  1. 取月初,年初
   date_trunc('month',时间) 
   date_trunc('year',时间)     

例:

  • select date_trunc(‘month’,current_date) 显示2021-08-01
  • select date_trunc(‘year’,current_date) 显示2021-01-01
  1. 转类型
# date转为varchar
select to_char(CURRENT_DATE,'yyyy-mm-dd')--2021-10-12 VARCHAR
  date转为varchar
select date_format(current_date -interval '1' day,'%Y-%m-%d %T')--2021-10-12 00:00:00 VARCHAR

# varchar转为date
select to_DATE('2021-10-12','yyyy-mm-dd')--2021-10-12 DATE 
varchar转为TIMESTAMP
select to_TIMESTAMP('2021-10-12 10:00:00.000000','yyyy-mm-dd hh24:mi:ss.ssssss')--2021-10-12 10:00:00 
select date_parse('2021-10-12','%Y-%m-%d')--2021-10-12 00:00:00 
select date_parse('20211012','%Y%m%d')--2021-10-12 00:00:00 

12.不规范的日期格式处理
日期转换的时候可以在最外层套一个函数try(),对于不规范的日期格式会置空,比如

select try(year(date_parse(BIRTHDAY,'%Y-%m-%d')))  as BIRTHDAY
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值