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 C#调用python代码(python带有库)
  • ¥15 矩阵加法的规则是两个矩阵中对应位置的数的绝对值进行加和
  • ¥15 活动选择题。最多可以参加几个项目?
  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
  • ¥15 vs2019中数据导出问题
  • ¥20 云服务Linux系统TCP-MSS值修改?
  • ¥20 关于#单片机#的问题:项目:使用模拟iic与ov2640通讯环境:F407问题:读取的ID号总是0xff,自己调了调发现在读从机数据时,SDA线上并未有信号变化(语言-c语言)
  • ¥20 怎么在stm32门禁成品上增加查询记录功能
  • ¥15 Source insight编写代码后使用CCS5.2版本import之后,代码跳到注释行里面
  • ¥50 NT4.0系统 STOP:0X0000007B