在大查询中,如何获取时间部分为00:00:00的昨天的日期?
答案 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)
如果需要时间部分,则需要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
答案 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的更多详细信息。