Hive中如何计算格式为202101的两个整数日期的月份差?
整数格式日期(如202101)的月份差计算方法
当日期是以202101这类整数形式存储时,要计算两个日期的月份差,核心是先把整数转成数据库能识别的日期类型,再用对应的月份计算函数。以下是主流数据库的实现方式:
Oracle
用TO_DATE函数把整数转成日期格式,再传入MONTHS_BETWEEN计算:
SELECT MONTHS_BETWEEN(TO_DATE(202209, 'YYYYMM'), TO_DATE(202107, 'YYYYMM')) AS month_diff FROM DUAL;
这个语句会返回14,正好是2022年9月到2021年7月的月份差。
MySQL
用STR_TO_DATE转换整数为日期,再用TIMESTAMPDIFF直接计算月份差:
SELECT TIMESTAMPDIFF(MONTH, STR_TO_DATE(202107, '%Y%m'), STR_TO_DATE(202209, '%Y%m')) AS month_diff;
结果同样是14。
SQL Server
先把整数转为字符串,补加01形成完整日期,再转成日期类型,最后用DATEDIFF计算:
SELECT DATEDIFF(MONTH, CAST(202107 AS VARCHAR(6)) + '01', CAST(202209 AS VARCHAR(6)) + '01') AS month_diff;
返回结果也是14。
内容的提问来源于stack exchange,提问作者Maths12
相关产品推荐
相关产品推荐

