不同数据库:MySQL、Hive、Presto获取日期的差异

现在有个需求要获取昨天、本月第一天的日期,并转成特定的格式,由于使用了多个数据库,然后发现不同数据库方法并不一样。

MySQL

-- 获取昨天的日期
SELECT DATE_SUB(CURDATE(), INTERVAL 1 DAY)
-- 获取本月第一天
-- 原理:将当天的日期 - 这个月第几天 + 1天
select date_add(CURDATE(),interval -day(CURDATE())+1 day) 

如果需要格式化成指定格式,如2021-10-01变成20211001,则需要使用format

SELECT DATE_FORMAT( date_add(CURDATE(),interval -day(CURDATE())+1 day), '%Y%m%d')

Hive

-- 获取昨天的日期
SELECT date_sub(current_date(),1)
-- 获取本月第一天
-- 使用trunc语法
SELECT trunc(current_date(), 'MM')
-- 获取本月第一天,并转为yyyyddmm的格式
-- 使用trunc语法
SELECT date_format(trunc(current_date(), 'MM'), 'yyyyMMdd')

presto

-- 获取昨天的日期
-- 亲测可行
SELECT date_add('day',-1,current_date)
-- 获取本月第一天
-- 使用trunc语法
SELECT date_add('day',-day(current_date)+1,current_date)
-- 获取本月第一天,并转为yyyyddmm的格式
SELECT format_datetime(date_add('day',-day(current_date)+1,current_date),'yyyyMMdd')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值