不同数据库:MySQL、Hive、Presto获取日期的差异
现在有个需求要获取昨天、本月第一天的日期,并转成特定的格式,由于使用了多个数据库,然后发现不同数据库方法并不一样。MySQL-- 获取昨天的日期SELECT DATE_SUB(CURDATE(), INTERVAL 1 DAY)-- 获取本月第一天-- 原理:将当天的日期 - 这个月第几天 + 1天select date_add(CURDATE(),interval -day(CURDATE())
·
现在有个需求要获取昨天、本月第一天的日期,并转成特定的格式,由于使用了多个数据库,然后发现不同数据库方法并不一样。
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')
更多推荐
已为社区贡献1条内容
所有评论(0)