我有一列date1
是varchar类型,我希望此列date
输入。我尝试更改字段,但所有日期都转换为0000-00-00
. 格式是dd-mm-yyyy
但是在varchar中。
如何使用 sql 查询或类似但在数据库级别转换相同的日期格式但具有日期格式?
我有一列date1
是varchar类型,我希望此列date
输入。我尝试更改字段,但所有日期都转换为0000-00-00
. 格式是dd-mm-yyyy
但是在varchar中。
如何使用 sql 查询或类似但在数据库级别转换相同的日期格式但具有日期格式?
UPDATE `table`
SET `column` = str_to_date( `column`, '%d-%m-%Y' );
有关STR_TO_DATE函数的更多信息。
由于您的列名是date1
,您可以在上面的语法中替换column
为date1
,代码应为:
UPDATE `table`
SET `date1` = str_to_date( `date1`, '%d-%m-%Y' );
这里的其他答案是有风险的,因为如果它们出错,您将丢失您的数据。一种更安全的方法是在数据库上创建一个具有 DATE(或 DATETIME,如果您也需要时间)格式的新字段,然后运行如下查询
UPDATE `table` SET `my_new_date_field` = STR_TO_DATE( `my_old_data_field`, '%d/%m/%Y');
这样,如果%d/%m/%Y
位错误,您将不会丢失数据。
满意后,您可以删除旧数据字段并重命名新字段。
使用MySQL 的STR_TO_DATE函数
首先,您需要以日期格式更新值。
UPDATE `tbl` SET `date1` = STR_TO_DATE(`date1`, '%d-%m-%Y') WHERE 1=1
然后将字段转换为日期。
最重要的是记得在此之后以 Ymd 格式插入日期。