0

Я попробовал два запроса:Почему CAST (AS) иногда работает на BigQuery?

SELECT CASE WHEN CAST(CURRENT_TIMESTAMP() AS DATE) = CURRENT_DATE() THEN 1 ELSE 0 END; 

и

SELECT CASE WHEN DATE(CURRENT_TIMESTAMP()) = CURRENT_DATE() THEN 1 ELSE 0 END; 

Первый запрос терпит неудачу в Наследствах SQL, но не в стандарте SQL, а второй запрос работает. (Стандартный SQL в настоящее время не распространяется на SLA.)

+0

Стандартный SQL покрывается BigQuery ОАС, а также. https://cloud.google.com/bigquery/sla –

ответ

1

Есть две проблем с первым запросом в Наследстве SQL:

  1. CAST (... AS DATE) в Наследства SQL работает только на строки, в то время как CURRENT_TIMESTAMP возвращает тип TIMESTAMP

  2. CURRENT_DATE в Наследства SQL обманчиво возвращает строку, а не DATE :(

Обе эти проблемы действительно фиксировали Стандартный SQL

1

Унаследованный SQL имеет limited support for DATE. Для получения дополнительной информации см Civil time in legacy SQL

Так что, если вам нужно быть в Наследствах SQL - вы должны использовать второй запрос в вашем случае с функцией DATE()

Смежные вопросы