1

I am trying to convert my column into a DATE format. It is currently in varchar and displays as: 12/06/2013

I run the following query;

UPDATE dispatch
   SET dispatchdate = DATE_FORMAT(STR_TO_DATE(dispatchdate, '%d/%m/%Y'), '%d-%m-%Y');

ALTER TABLE dispatch
      CHANGE dispatchdate dispatchdate date;

However after running this query, it displays my data as: 0000-00-00

I am trying to change it so that it will display as DD-MM-YYYY not YYYY-MM-DD

4

2 回答 2

0

0000-00-00是 mysql 显示“零”或“虚拟”日期的特殊方式。

像许多 mysql 的怪事一样,你学会了忍受它,我建议你:

UPDATE dispatch SET
dispatchdate = null
WHERE dispatchdate = '0000-00-00'

或设置为最适合您的任何值。

于 2013-07-24T04:58:22.490 回答
0

您必须构建一个临时列:您不能在适当的位置更改列的数据类型,并希望保留数据。它只是行不通。

所以

  • 添加一个新的日期时间列,可能命名为tmp_dispatchdate
  • 使用您编写的查询将日期时间值写入该列
  • 确认数据转换正确后,dropdispatchdate
  • 重命名tmp_dispatchdatedispatchdate

如果您在相关表上有一个主键,您可以在临时表中完成所有“中间”工作,如果您愿意,可以使用 PK 来引用正确的记录。但是您仍然必须删除一列并添加一列才能执行您想要执行的操作。

于 2013-07-24T04:58:46.083 回答