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

如何在Presto中选取Hive表日期字段的当月第一天?

解决Presto中获取日期对应当月第一天的问题

我之前把Hive SQL迁移到Presto的时候也踩过这个坑!Hive里的TRUNC(date,'MM')语法在Presto里确实不生效,不过别担心,有两种简单的替代方案可以实现相同的需求:

方法一:使用date_trunc()函数

这是Presto官方推荐的标准方法,直接指定截断到month维度,就能得到当月第一天的timestamp类型结果,如果需要转换成纯日期类型,再套一层cast()即可。

示例代码:

-- 假设你的日期字段名为order_date,表名为hive_order_table
SELECT 
  CAST(date_trunc('month', order_date) AS DATE) AS first_day_of_month
FROM hive_order_table;

date_trunc('month', order_date)会返回类似2024-05-01 00:00:00.000的timestamp值,转换成DATE类型后就是纯净的当月第一天日期。

方法二:通过日期偏移计算

如果习惯用更直观的日期运算逻辑,可以先提取当前日期的天数,再用date_add()往前偏移(当前天数-1)天,同样能得到当月第一天:

示例代码:

SELECT 
  date_add('day', 1 - EXTRACT(DAY FROM order_date), order_date) AS first_day_of_month
FROM hive_order_table;

比如当前日期是2024-05-15,提取天数是15,1-15=-14,日期往前减14天就是2024-05-01,完美得到当月第一天。

两种方法都能稳定实现需求,个人更推荐第一种,因为代码更简洁可读性更强,也是Presto的标准用法。

内容的提问来源于stack exchange,提问作者ericbrownaustin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:52:46