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