Ниже приведен еще один вариант стандартного SQL BigQuery
.
#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
с результатом (на день ответа - 02 апреля 2019 г.)
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 не ссылается на абсолютный экземпляр во времени. Вместо этого это гражданское время или время, которое пользователь будет видеть на часах или календаре.
Более подробную информацию о DATETIME и TIMESTAMP вы можете найти в Типы данных doc