You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

执行SQL查询时提示Invalid DATE Literal语法错误,求解决方案

解决SQL中"Invalid DATE Literal"语法错误的方法

错误根源

问题出在关联条件的日期处理部分:DATE 'X'是无效的日期字面量,数据库无法将字符'X'解析为合法的日期值,因此抛出语法错误。

解决方法

方法1:使用合法的日期占位符

将DATE 'X'替换为数据库支持的合法日期值,比如通用的极小日期DATE '0001-01-01'(不同数据库的最小日期可能略有差异,可根据实际使用的数据库调整,Oracle、Snowflake、PostgreSQL均支持该格式)。

修改后的关联条件片段:

COALESCE(CAST(main.EFFECTIVE_START_DT AS DATE), DATE '0001-01-01') = COALESCE(CAST(temp.EFFECTIVE_START_DT AS DATE), DATE '0001-01-01')

方法2:转字符串后用'X'占位再转回日期

先将日期字段转为字符串,用'X'作为空值占位符,之后再统一转回日期类型(前提是原字段的日期值本身可正常转换为DATE类型)。

修改后的关联条件片段:

CAST(COALESCE(CAST(main.EFFECTIVE_START_DT AS VARCHAR), 'X') AS DATE) = CAST(COALESCE(CAST(temp.EFFECTIVE_START_DT AS VARCHAR), 'X') AS DATE)

完整修改后的SQL示例(方法1)

SELECT 1 
FROM UDMTOOL_STG.GLOBAL_APPLE_BRAND_QUERIES main 
INNER JOIN UDMTOOL_STG.GLOBAL_APPLE_BRAND_QUERIES_TEMP temp
    ON (
            COALESCE(main.COUNTRY_CD,'X')=COALESCE(temp.COUNTRY_CD,'X') 
        AND COALESCE(main.SEARCHED_KEYWORD_VAL,'X')=COALESCE(temp.SEARCHED_KEYWORD_VAL,'X')
        AND COALESCE(main.SEARCHED_KEYWORD_VAL_ENG,'X')=COALESCE(temp.SEARCHED_KEYWORD_VAL_ENG,'X')
        AND COALESCE(CAST(main.EFFECTIVE_START_DT AS DATE), DATE '0001-01-01')=COALESCE(CAST(temp.EFFECTIVE_START_DT AS DATE), DATE '0001-01-01')
        AND COALESCE(main.BRAND_NAME,'X')=COALESCE(temp.BRAND_NAME,'X') 
        AND main.OP_CODE<>'D'
    );

内容的提问来源于stack exchange,提问作者anji

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 02:57:26