如何在大查询中获取时间部分00:00:00的昨天的日期?

问题描述 投票:0回答:4

在大查询中,如何获取时间部分00:00:00的昨天日期?

sql google-bigquery
4个回答
1
投票

DATE如果您希望昨天DateTime与00:00作为时间使用,则没有时间部分:

SELECT DATETIME_TRUNC(DATETIME_SUB(CURRENT_DATETIME(), INTERVAL 1 DAY), DAY) as yesterday;

如果你想要昨天使用日期:

SELECT DATE_SUB(CURRENT_DATE(), INTERVAL 1 DAY) as yesterday;

1
投票

如果你想要一个时间部分,那么你想要一个TIMESTAMPDATETIME列。

那么,要么:

SELECT DATETIME(DATE_ADD(CURRENT_DATE(), INTERVAL -1 DAY)) as yesterday_dt,
       TIMESTAMP(DATE_ADD(CURRENT_DATE(), INTERVAL -1 DAY)) as yesterday_ts

0
投票

这段代码可以让你约会

SELECT DATEADD(dd, -1, DATEDIFF(dd, 0, GETDATE()));

对于不同方法,请检查此链接

MS SQL Server - How to get Date only from the datetime value?


0
投票

下面是BigQuery标准SQL的另一个选项

#standardSQL
SELECT 
  TIMESTAMP_SECONDS(86400 * (UNIX_DATE(CURRENT_DATE()) - 1)) yesterday_as_timestamp,
  DATETIME(TIMESTAMP_SECONDS(86400 * (UNIX_DATE(CURRENT_DATE()) - 1))) yesterday_as_datetime

结果(截止日期 - 2019年4月2日)

Row     yesterday_as_timestamp      yesterday_as_datetime    
1       2019-04-01 00:00:00 UTC     2019-04-01T00:00:00    

注意:

DATETIME    Represents a year, month, day, hour, minute, second, and subsecond. Range: 0001-01-01 00:00:00 to 9999-12-31 23:59:59.999999.   
TIMESTAMP   Represents an absolute point in time, with microsecond precision.   Range: 0001-01-01 00:00:00 to 9999-12-31 23:59:59.999999 UTC.

时间戳表示绝对时间点,与任何时区或常规(如夏令时)无关。

TIMESTAMP提供微秒精度。

与Timestamps不同,DATETIME对象不会及时引用绝对实例。相反,它是民用时间,或用户在手表或日历上看到的时间。

您可以在Data Types doc中查看有关DATETIME和TIMESTAMP的更多详细信息

© www.soinside.com 2019 - 2024. All rights reserved.