【问题标题】:1292 Truncated incorrect date value: '05/18/2011'1292 截断不正确的日期值:'05/18/2011'
【发布时间】:2015-07-25 08:03:24
【问题描述】:

我正在尝试将所有值存储为 VARCHAR 的数据库转换为正确的列类型,例如:INT、DATE、DECIMAL 等...

问题是,date_orderdate_billeddate_paid 列以不同的格式存储

我仍然收到 1292 Truncated incorrect date value: '05/18/2011' 错误并且几乎不知道该怎么做,因为该确切的日期格式被列为 CASE

我的代码:

SELECT 
      CAST(`ar_no` AS UNSIGNED), 
      CAST(`accession_id` AS UNSIGNED), 
      CAST(`client_id` AS UNSIGNED), 
      CAST(`insurance_id` AS UNSIGNED), 
      CAST(`test_id` AS UNSIGNED), 

CASE 
     WHEN `date_paid` = '0' THEN `date_paid` = '00/00/0000'
     WHEN LENGTH(DATE(STR_TO_DATE(`date_order`, '%m/%d/%y'))) IS NOT NULL THEN STR_TO_DATE(`date_order`, '%m/%d/%y') 
     WHEN LENGTH(DATE(STR_TO_DATE(`date_order`, '%m/%d/%Y'))) IS NOT NULL THEN STR_TO_DATE(`date_order`, '%m/%d/%Y')
END,

CASE 
     WHEN `date_paid` = '0' THEN `date_paid` = '00/00/0000'
     WHEN LENGTH(DATE(STR_TO_DATE(`date_billed`, '%m/%d/%y'))) IS NOT NULL THEN STR_TO_DATE(`date_billed`, '%m/%d/%y') 
     WHEN LENGTH(DATE(STR_TO_DATE(`date_billed`, '%m/%d/%Y'))) IS NOT NULL THEN STR_TO_DATE(`date_billed`, '%m/%d/%Y')
END,

CASE 
     WHEN `date_paid` = '0' THEN `date_paid` = '00/00/0000'
     WHEN LENGTH(DATE(STR_TO_DATE(`date_paid`, '%m/%d/%y'))) IS NOT NULL THEN STR_TO_DATE(`date_paid`, '%m/%d/%y') 
     WHEN LENGTH(DATE(STR_TO_DATE(`date_paid`, '%m/%d/%Y'))) IS NOT NULL THEN STR_TO_DATE(`date_paid`, '%m/%d/%Y')
END,

CAST(`amount_billed` AS DECIMAL(15,2)),
CAST(`amount_received` AS DECIMAL(15,2)),
CAST(`amount_adjusted` AS DECIMAL(15,2))

FROM `acs`.`billing_unformatted`;

【问题讨论】:

    标签: mysql mysql-workbench


    【解决方案1】:

    Mysql 仅排除 YYYY-MM-DD 格式的日期。这就是为什么您会收到诸如 1292 Truncated incorrect date value: '05/18/2011'

    之类的错误

    您可以在导入前在 Excel 中更改此设置。

    要更改 Excel 中的日期格式:右键单击顶部单元格。从下拉列表中选择format cells。将local 更改为'Afrikans'。选择类似于2001-03-14 的格式。使用顶部单元格fill down。然后保存文档。

    请注意:Excel 有时会尝试做太多事情,并将此列恢复为 English(U.S) 默认时区。因此,如果您打算进行更多编辑,请确保该列没有恢复。

    这是dev.mysql 上更多字符串文字的链接。

    此存储过程和帖子也可能对您有所帮助:Error code 1292

    【讨论】:

    • 问题是条目是 400 万行长 excel 不会打开整个文件...另外我认为 str_to_date() 函数会将错误的日期格式转换为正确的日期格式 @987654323 @
    • 是的,我使用 LOAD DATA INFILE 将 csv 文件导入到临时表中,我试图将其转换为具有正确列类型的表。存储过程通常看起来很有帮助。我将尝试将其转换为我的情况,看看是否有帮助,谢谢
    • 我还没有足够的积分来投票,但我将其标记为已解决
    • 当你这样做的时候不要忘记点赞 :)..以及点赞Error code 1292,如果你没有注意到,那是我不久前发的帖子...谢谢
    猜你喜欢
    • 1970-01-01
    • 2023-03-28
    • 2019-06-14
    • 2014-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-05
    • 1970-01-01
    相关资源
    最近更新 更多