Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 将varchar转换为日期显示0000-00-00_Mysql - Fatal编程技术网

Mysql 将varchar转换为日期显示0000-00-00

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-

我正在尝试将我的列转换为日期格式。 它当前在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-00-00

我试图更改它,使其显示为DD-MM-YYYY而不是YYYY-MM-DD

0000-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显示日期的方式。它不是为了美观,而是为了功能。