我正在运行以下查询:
select a.event_date,
date_format(date_trunc('month', a.event_date), '%m/%d/%Y') as date
from monthly_test_table a
order by 1;
输出:
2017-09-15 | 09/01/2017
2017-10-01 | 09/30/2017
2017-11-01 | 11/01/2017
谁能告诉我为什么日期“2017-10-01”在使用date\u trunc后显示为“09/30/2017”。
提前谢谢。。。!
3条答案
按热度按时间7cjasjjr1#
你可以用
date_add
用逻辑减去1天(你的约会)来复制trunc
.例如:
我最近也遇到了同样的问题,并采用了这种逻辑。
ps:据我所知,没有
date_trunc
中的函数Hive documentation
.pgpifvop2#
您正在反向格式化,因此不正确。使用以下代码
9vw9lbht3#
根据以下源代码:
UTC_CHRONOLOGY
时间被翻译成语言环境,也被翻译成英语Description
其中提到的会话时区将是精确的,也请参阅下面的url。看到了吗https://prestodb.io/docs/current/release/release-0.66.html:::
时区:
此版本完全支持时区规则,这些规则是正确执行日期/时间计算所必需的。通常,会话时区用于时间计算。这是提交查询的客户端计算机的时区(如果可用)。否则,它就是运行presto协调器的服务器的时区。
使用夏时制之后的时区进行操作的查询可能会产生意外的结果。例如,如果我们运行以下查询以添加在美国/洛杉矶时区使用的24小时:
选择日期添加('小时',24,时间戳'2014-03-08 09:00:00');
输出:2014-03-09 10:00:00.000