在大查询中,如何获取时间部分00:00:00的昨天日期?
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;
如果你想要一个时间部分,那么你想要一个TIMESTAMP
或DATETIME
列。
那么,要么:
SELECT DATETIME(DATE_ADD(CURRENT_DATE(), INTERVAL -1 DAY)) as yesterday_dt,
TIMESTAMP(DATE_ADD(CURRENT_DATE(), INTERVAL -1 DAY)) as yesterday_ts
这段代码可以让你约会
SELECT DATEADD(dd, -1, DATEDIFF(dd, 0, GETDATE()));
对于不同方法,请检查此链接
MS SQL Server - How to get Date only from the datetime value?
下面是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的更多详细信息