如何获取昨天的日期从 Vertica SQL 中的 00:00:00 开始
How to get yesterday date starts at 00:00:00 in Vertica SQL
如何在 Vertica SQL 中获取昨天开始于 00:00:00 的日期?
一般在SQL服务器中是这样的
SELECT DATEADD(日, -1, DATEDIFF(日, 0, GetDate()))
2021-01-31 00:00:00.000
在 Vertica 中怎么样?
我显然会更接近 ANSI 标准。有一个ANSI保留字CURRENT_DATE
,它是returns今天的日期(不带时间)的表达式。许多 DBMS 都支持它(我实际上也认为 SQL 服务器);如果我需要时间戳,我会坚持这一点 - 或者 CURRENT_TIMESTAMP
。 “如果可以避免,切勿使用 DBMS 细节”。
在 Vertica 中,您可以从日期中减去整数或将整数添加到日期中。您不能使用 SQL-服务器特有的 DATEADD()
,但您可以使用更标准的(在其他 DBMS 中)TIMESTAMPADD()
,其工作方式类似于 DATEADD()
和 returns时间戳。
为了完整起见:如果您的结果时间戳不是 '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
如何在 Vertica SQL 中获取昨天开始于 00:00:00 的日期?
一般在SQL服务器中是这样的 SELECT DATEADD(日, -1, DATEDIFF(日, 0, GetDate())) 2021-01-31 00:00:00.000
在 Vertica 中怎么样?
我显然会更接近 ANSI 标准。有一个ANSI保留字CURRENT_DATE
,它是returns今天的日期(不带时间)的表达式。许多 DBMS 都支持它(我实际上也认为 SQL 服务器);如果我需要时间戳,我会坚持这一点 - 或者 CURRENT_TIMESTAMP
。 “如果可以避免,切勿使用 DBMS 细节”。
在 Vertica 中,您可以从日期中减去整数或将整数添加到日期中。您不能使用 SQL-服务器特有的 DATEADD()
,但您可以使用更标准的(在其他 DBMS 中)TIMESTAMPADD()
,其工作方式类似于 DATEADD()
和 returns时间戳。
为了完整起见:如果您的结果时间戳不是 '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