我尝试了两个问题:
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;
第一个查询在Legacy SQL中失败但在标准SQL中失败,而第二个查询有效。 (标准SQL目前不在SLA中。)
答案 0 :(得分:1)
旧版SQL有limited support for DATE。有关详细信息,请参阅Civil time in legacy SQL
因此,如果您需要使用旧版SQL - 在使用DATE()函数的情况下应该使用第二个查询
答案 1 :(得分:1)
Legacy SQL中的第一个查询存在两个问题:
CAST(... AS DATE)仅适用于字符串,而CURRENT_TIMESTAMP返回TIMESTAMP类型
传统SQL中的CURRENT_DATE误导性地返回STRING,而不是DATE:(
使用标准SQL
确实解决了这两个问题