不同数据库: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')

你可能感兴趣的:(hive,mysql,数据库)