Hive 主干日期格式问题
Hive trunc date format issues
我正在尝试将 GP 转换为 Hive 迁移逻辑,但下面的语句在执行查询时给出了错误的输出:
select (date_trunc('Month','2022-01-04'::date ) - interval '0 Month + 1 day')::date
GP 输出:2021-12-31
如果我们转换 Hive 查询类似
select cast(date_add(add_months(trunc(cast('2022-01-04' as date),'MM'),-0),1) as date)
如果 Hive 查询输出:2022-01-02
我可以看出日期的差异。请帮助我。
谢谢
您在第一个查询中减去间隔 0 个月和 1 天,在第二个查询中您添加 0 个月(没有意义)并添加 1 天(不减去)。如果您想在 Hive 中执行与 GP 查询相同的操作,只需减去 1 天,它的工作原理相同:
select date(date_add(trunc('2022-01-04','MM') ,-1)) --returns 2021-12-31
或者同样使用interval
:
select date(date(trunc('2022-01-04','MM')) - interval '1' day)
或另一种可能的选择:
select date(add_months(last_day('2022-01-04') ,-1))
我正在尝试将 GP 转换为 Hive 迁移逻辑,但下面的语句在执行查询时给出了错误的输出:
select (date_trunc('Month','2022-01-04'::date ) - interval '0 Month + 1 day')::date
GP 输出:2021-12-31
如果我们转换 Hive 查询类似
select cast(date_add(add_months(trunc(cast('2022-01-04' as date),'MM'),-0),1) as date)
如果 Hive 查询输出:2022-01-02
我可以看出日期的差异。请帮助我。
谢谢
您在第一个查询中减去间隔 0 个月和 1 天,在第二个查询中您添加 0 个月(没有意义)并添加 1 天(不减去)。如果您想在 Hive 中执行与 GP 查询相同的操作,只需减去 1 天,它的工作原理相同:
select date(date_add(trunc('2022-01-04','MM') ,-1)) --returns 2021-12-31
或者同样使用interval
:
select date(date(trunc('2022-01-04','MM')) - interval '1' day)
或另一种可能的选择:
select date(add_months(last_day('2022-01-04') ,-1))