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

时间:2019-04-02 06:39:25

标签: sql google-bigquery

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

4 个答案:

答案 0 :(得分: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 :(得分: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

答案 2 :(得分:0)

此代码可让您获取日期

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

对于其他方法,请检查此链接

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

答案 3 :(得分: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提供微秒精度。

     

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

您可以在Data Types文档

中查看有关DATETIME和TIMESTAMP的更多详细信息。