Mysql日期警告数据被截断

时间:2014-01-23 10:12:48

标签: mysql date format warnings

我对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()函数相同。 感谢。

3 个答案:

答案 0 :(得分:10)

发布查询

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)

答案 1 :(得分:0)

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

答案 2 :(得分:0)

我遇到了同样的问题,但原因不同。我的 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'
>>>