Как получить дату вчерашнего дня с частью 00:00:00 в большом запросе? - PullRequest
0 голосов
/ 02 апреля 2019

В большом запросе, как мне получить вчерашнюю дату с временной частью 00: 00: 00?

Ответы [ 4 ]

1 голос
/ 02 апреля 2019

Если вам нужна часть времени, то вам нужен столбец 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
1 голос
/ 02 апреля 2019

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;
0 голосов
/ 03 апреля 2019

Ниже приведен еще один вариант стандартного 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

0 голосов
/ 02 апреля 2019

Этот код возвращает вам дату

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

Для различных методов проверьте эту ссылку

MS SQL Server - Как получить Date только из значения datetime?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...