You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在HiveQL中基于现有日期生成仅保留年月的新日期?

在HiveQL中生成当月第一天日期的方法

嘿,作为Hive新手碰到这个需求太正常啦!我来给你分享几个简单好用的方法,实现和你Excel公式一样的效果——把YYYY-MM-DD格式的日期转换为当月第一天的日期(比如2024-05-15变成2024-05-01)。

方法1:使用trunc()函数(最简洁高效)

Hive的trunc()函数专门用来截断日期到指定的时间精度,当你传入'MM'作为第二个参数时,它会直接返回该日期所在月份的第一天,返回结果是日期类型,完美匹配你的需求。

示例代码:

SELECT trunc(old_date, 'MM') AS new_date
FROM your_table;

方法2:使用date_format()函数(灵活可控)

如果你更习惯通过格式化的方式来实现,可以用date_format()把原日期格式化为yyyy-MM-01的形式。这个方法返回的是字符串类型,如果需要日期类型,再套一层to_date()转换即可。

示例代码:

-- 返回字符串类型的当月第一天
SELECT date_format(old_date, 'yyyy-MM-01') AS new_date_str
FROM your_table;

-- 转换为日期类型
SELECT to_date(date_format(old_date, 'yyyy-MM-01')) AS new_date
FROM your_table;

方法3:手动拼接构造日期(直观易懂)

还有一种手动拼接的方式,通过提取年份和月份,再拼接上-01来构造日期,适合你想更直观理解逻辑的场景:

示例代码:

SELECT to_date(concat(year(old_date), '-', lpad(month(old_date), 2, '0'), '-01')) AS new_date
FROM your_table;

这里用lpad()是为了保证月份是两位数(比如5月变成05),避免出现2024-5-01这种不符合标准格式的字符串。

以上几种方法都能实现你要的效果,我个人最推荐第一种trunc()的方式,代码简洁还直接返回日期类型,不用额外转换~

内容的提问来源于stack exchange,提问作者Chrissie M.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:55:34