weixin_42536314 2020-04-02 12:24 采纳率: 0%
浏览 238
已采纳

sql日期时间值错误 大神帮忙看看这个是什么问题

UPDATE f_get_exch_rt_date d 
SET d.V_EXCH_RATE_DATE = (
    SELECT
        T.REAL_DT 
    FROM
        fun_exch_rt_date T 
    WHERE
        T.CURRENCY1 = UPPER( d.P_CURRENCYTYPE1 ) 
        AND T.CURRENCY2 = UPPER( d.P_CURRENCYTYPE2 ) 
        AND DATE_FORMAT( T.MONTH, '%Y%m' ) = 
        DATE_FORMAT( DATE_SUB( DATE_FORMAT( d.P_MONTH, '%Y%m%d' ), INTERVAL 1 MONTH ), '%Y%m' ) 
     and T.MONTH is NOT null
        AND T.EXCH_RATE = (
        SELECT
            1/(case MIN( ts.EXCH_RATE )  when NULL and 0 then 0    else  MIN( ts.EXCH_RATE ) end)
        FROM
            fun_exch_rt_date ts 
        WHERE
            ts.CURRENCY1 = UPPER( d.P_CURRENCYTYPE2 ) 
            AND ts.CURRENCY2 = UPPER( d.P_CURRENCYTYPE1 ) 
            AND DATE_FORMAT( ts.MONTH, '%Y%m' ) = DATE_FORMAT( DATE_SUB( STR_TO_DATE(DATE_FORMAT( d.P_MONTH, '%Y%m%d' ),'%Y%m%d')
            , INTERVAL -1 MONTH ), '%Y%m' ) 
        ) 
    ) 
WHERE
    d.P_CURRENCYTYPE1 != d.P_CURRENCYTYPE2 
    AND d.V_EXCH_RATE_DATE IS NULL
    and d.P_MONTH IS NOT NULL

报出的问题是

> 1292 - Incorrect datetime value: '202003'

而拉出来 这个则能出结果

SELECT 
*
FROM
    f_get_exch_rt_date d,
    fun_exch_rt_date t 
WHERE
    DATE_FORMAT(date_sub( DATE_FORMAT( d.P_MONTH, '%Y%m%d' ), INTERVAL 1 MONTH ), '%Y%m' )= DATE_FORMAT(t.MONTH, '%Y%m' ) 
    AND d.P_MONTH IS NOT NULL

图片说明

大神们帮忙看看

  • 写回答

1条回答 默认 最新

  • 德玛洗牙 2020-04-02 15:23
    关注

    V_EXCH_RATE_DATE字段是date还是datetime类型,202003很明显是一个int类型,存入时间类型肯定不对的,将202003处理一下处理成2020-03-01就可以了

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 vscode的问题提问
  • ¥50 切换TabTip键盘的输入法
  • ¥15 可否在不同线程中调用封装数据库操作的类
  • ¥15 微带串馈天线阵列每个阵元宽度计算
  • ¥15 keil的map文件中Image component sizes各项意思
  • ¥20 求个正点原子stm32f407开发版的贪吃蛇游戏
  • ¥15 划分vlan后,链路不通了?
  • ¥20 求各位懂行的人,注册表能不能看到usb使用得具体信息,干了什么,传输了什么数据
  • ¥15 Vue3 大型图片数据拖动排序
  • ¥15 Centos / PETGEM