Looker中CASE语句指定特定日期的语法咨询
Looker CASE语句ELSE部分使用固定日期的正确语法
在Looker的SQL CASE语句中,要在ELSE部分指定固定日期2050-01-01,核心是要符合底层数据库的日期语法规范,以下是不同数据库场景的正确写法:
适用于MySQL、PostgreSQL等数据库
这类数据库支持直接使用标准日期字符串,修改后的代码如下:
sql:CASE WHEN ${Today} < ${XXX} THEN ${XXX} ELSE '2050-01-01' END;;
或者更严谨地显式声明日期类型:
sql:CASE WHEN ${Today} < ${XXX} THEN ${XXX} ELSE DATE '2050-01-01' END;;
适用于Oracle数据库
Oracle需要用TO_DATE函数将字符串转换为日期类型,指定格式匹配:
sql:CASE WHEN ${Today} < ${XXX} THEN ${XXX} ELSE TO_DATE('2050-01-01', 'YYYY-MM-DD') END;;
关键注意点
- 优先使用
YYYY-MM-DD这种ISO标准日期格式,避免因数据库的日期解析设置差异导致错误 - 不要直接用
'01/01/2050'这类格式,部分数据库会将其识别为月/日/年,引发日期解析错误 - ${TODAY}是Looker内置变量,替换为固定日期时无需使用Looker的变量运算语法,直接写符合数据库要求的日期表达式即可
内容的提问来源于stack exchange,提问作者Mark
相关产品推荐
相关产品推荐

