【问题标题】:Mysql date warning data truncatedMysql日期警告数据被截断
【发布时间】:2014-01-23 10:12:47
【问题描述】:

Mysql DATE 格式有一个有趣的问题。 我有这张桌子:

| id          | int(11)      | NO   | PRI | NULL    | auto_increment |
| file_path   | varchar(255) | YES  |     | NULL    |                |
| date_export | date         | YES  |     | NULL    |                |

当我使用日期函数 NOW() 更新一行时,日期会以这种格式更新:

'2014-01-23'

但是当我使用另一种日期格式时,比如手写格式:

update backup_conf_allied set date_export='2014-23-01' where file_path='IDF-952584-SW1' ;

date_export 列转换为:

'0000-00-00'

警告表告诉我:

| Warning | 1265 | Data truncated for column 'date_export' at row 3628 |

为什么?日期格式与 NOW() 函数相同。 谢谢。

【问题讨论】:

    标签: mysql date format warnings


    【解决方案1】:

    已发布查询

    update backup_conf_allied set `date_export='2014-23-01'` where file_path='IDF-952584-SW1' ;
    

    应该是什么

    update backup_conf_allied set `date_export='2014-01-23'` where file_path='IDF-952584-SW1' ;
    

    MySQL 支持 DATE 格式为 'YYYY-MM-DD' ,Year then Month then Date,因此您正在更新错误值的日期列 "2014-23-01" ,一年只有 12 个月,您使用的月份 23 无效那是 MySQL 正在将其转换为 ZERO DATE (0000-00-00)

    【讨论】:

    • NOW() 以正确的格式返回当前时间戳为“2014-01-23 15:48:50”
    【解决方案2】:

    我最近遇到了类似的问题,我的问题是我试图上传一个日期时间对象作为日期对象。尽管这与 Gui O 遇到的问题不同,但如果您遇到此问题,请确保您实际上是在尝试上传日期对象。

    【讨论】:

      【解决方案3】:

      我遇到了同样的问题,但原因不同。我的 MySQL 列有一个 datetime 类型,但我的日期时间值来自 Python,它们看起来像这样:'2021-04-01 03:58:50.088087'。

      所以结果是在句号之前截断:

      t = t[0:19]
      

      例如:

      >>> datetime.datetime.now().isoformat()
      '2021-04-03T08:28:41.602373'
      >>> datetime.datetime.now().isoformat()[0:19]
      '2021-04-03T08:28:44'
      >>>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-06-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-02-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多