我正在尝试将我的列转换为DATE格式。 它目前在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
答案 0 :(得分:0)
0000-00-00
是mysql显示“零”或“虚拟”date的特殊方式。
像许多mysql的古怪,你学习如何使用它,我建议你:
UPDATE dispatch SET
dispatchdate = null
WHERE dispatchdate = '0000-00-00'
或设置为最适合您的价值。
答案 1 :(得分:0)
您必须构建一个临时列:您无法在适当的位置更改列的数据类型,并且希望保留数据。它只是赢了工作。
所以
tmp_dispatchdate
dispatchdate
tmp_dispatchdate
重命名为dispatchdate
如果您在相关桌面上有主键,则可以执行所有"中"如果您愿意,可以在临时表中使用PK来引用正确的记录。但是,您仍然需要删除一列并添加一列来执行您尝试执行的操作。