微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 Vertica SQL 中获取昨天的日期从 00:00:00 开始

如何解决如何在 Vertica SQL 中获取昨天的日期从 00:00:00 开始

如何在 Vertica sql获取从 00:00:00 开始的昨天日期?

通常在 sql Server 中它会是这样的 SELECT DATEADD(Day,-1,DATEDIFF(Day,GetDate())) 2021-01-31 00:00:00.000

Vertica 怎么样?

解决方法

我显然会更接近 ANSI 标准。有一个 ANSI 保留字 CURRENT_DATE,它是一个返回今天日期(不带时间)的表达式。许多 DBMS 都支持它(我实际上也认为 SQL Server);如果我需要时间戳,我会坚持下去 - 或者坚持 CURRENT_TIMESTAMP 。 “如果可以避免,请不要使用 DBMS 细节”。

在 Vertica 中,您可以从日期中减去整数或将整数添加到日期中。您不能使用 SQL-Server 特有的 DATEADD(),但您可以使用更标准的(在其他 DBMS 中)TIMESTAMPADD(),它的工作方式类似于 DATEADD() 并返回时间戳。

为了完整起见:如果您的结果时间戳的时间元素不是 '00:00:00',请使用 TRUNC(<timestamp>) 截断值并获取时间为零的时间戳。

SELECT 
  CURRENT_DATE   AS ANSI_CURRENT_DATE,CURRENT_DATE-1 AS yesterday_midnight_minus,TIMESTAMPADD(DAY,-1,CURRENT_DATE) AS tsadd
;
-- out  ANSI_CURRENT_DATE | yesterday_midnight_minus |        tsadd        
-- out -------------------+--------------------------+---------------------
-- out  2021-02-01        | 2021-01-31               | 2021-01-31 00:00:00

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。