Mysql 将varchar转换为日期显示0000-00-00
我正在尝试将我的列转换为日期格式。 它当前在varchar中,显示为:12/06/2013 我运行以下查询Mysql 将varchar转换为日期显示0000-00-00,mysql,Mysql,我正在尝试将我的列转换为日期格式。 它当前在varchar中,显示为:12/06/2013 我运行以下查询 UPDATE dispatch SET dispatchdate = DATE_FORMAT(STR_TO_DATE(dispatchdate, '%d/%m/%Y'), '%d-%m-%Y'); ALTER TABLE dispatch CHANGE dispatchdate dispatchdate date; 但是,运行此查询后,它会将我的数据显示为:0000-
UPDATE dispatch
SET dispatchdate = DATE_FORMAT(STR_TO_DATE(dispatchdate, '%d/%m/%Y'), '%d-%m-%Y');
ALTER TABLE dispatch
CHANGE dispatchdate dispatchdate date;
但是,运行此查询后,它会将我的数据显示为:0000-00-00
我试图更改它,使其显示为DD-MM-YYYY而不是YYYY-MM-DD0000-00-00是mysql显示零或虚拟的特殊方式
就像mysql的许多古怪之处一样,你要学会接受它,我建议你:
UPDATE dispatch SET
dispatchdate = null
WHERE dispatchdate = '0000-00-00'
或者设置为最适合您的值。您必须构建一个临时列:您不能在适当的位置更改列的数据类型,而希望保留数据。这就是行不通 所以 添加一个新的datetime列,可能名为tmp_dispatchdate 使用您编写的查询将datetime值写入该列 确认数据转换正确后,删除dispatchdate 将tmp_dispatchdate重命名为dispatchdate
如果您在所讨论的表上有主键,您可以在临时表中执行所有中间工作,如果您愿意,可以使用PK引用正确的记录。但是你仍然需要删除一列并添加一列来完成你要做的事情。YYYY-MM-DD是MySQL显示日期的方式。它不是为了美观,而是为了功能。