Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.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中更新日期格式_Mysql_Date Format - Fatal编程技术网

在MySQL中更新日期格式

在MySQL中更新日期格式,mysql,date-format,Mysql,Date Format,我正在处理一个表,该表有两种格式的日期存储在一个字段中,一些在mm/dd/yy中,而较新的条目在yyyy/mm/dd中 我想运行这样的查询 UPDATE table SET date_field = DATE_FORMAT(date_field, '%Y/%m/%d') WHERE date_field = DATE_FORMAT(date_field, '%m/%d/%y') 但它只是不起作用。我得到的一个结果是,它只是将%m数据转换成%Y并将数据弄乱 有什么想法吗?首先要将不正确的

我正在处理一个表,该表有两种格式的日期存储在一个字段中,一些在
mm/dd/yy
中,而较新的条目在
yyyy/mm/dd

我想运行这样的查询

UPDATE table
   SET date_field = DATE_FORMAT(date_field, '%Y/%m/%d') 
WHERE date_field = DATE_FORMAT(date_field, '%m/%d/%y')
但它只是不起作用。我得到的一个结果是,它只是将
%m
数据转换成
%Y
并将数据弄乱

有什么想法吗?

首先要将不正确的字符串转换为实际的日期对象,然后使用
date\u格式
将其转换为所需格式的字符串

另外,您的
WHERE
条件也不会这样工作。您应该使用
之类的
查找格式错误的字符串

UPDATE your_table SET date_field =
    DATE_FORMAT(STR_TO_DATE(date_field, '%m/%d/%y'), '%Y/%m/%d') 
WHERE date_field LIKE '__/__/____'

您希望使用STR_to_DATE函数,而不是DATE_格式。另外,我假设您只想更新格式错误的日期,所以我想您可以这样做:

UPDATE your_table
SET date_field = DATE(STR_TO_DATE(date_field, '%m/%d/%Y'))
WHERE DATE(STR_TO_DATE(date_field, '%m/%d/%Y')) <> '0000-00-00';
更新您的_表
设置日期字段=日期(STR_TO_date(日期字段,'%m/%d/%Y'))
其中日期(STR_TO_DATE(日期字段,%m/%d/%Y'))“0000-00-00”;

p.S.表格包含列,而不是字段。您不应该使用字符串类型来保存日期,但是日期类型是什么?啊,对,实际上是三个:

  • 不要重新发明轮子。是的,是的,我知道从零开始做以前只有一百万人发明的事情是很诱人的(没有讽刺的意思),但是MySQL有一个好的、高效的、可用的
    DATE
    格式,使用它;仅对输入/输出进行格式化。这样可以避免数据(日期本身)和表示(日期格式)的混淆

  • 至于数据,恢复已知的良好备份(你有备份,对吗?)-在一般情况下,没有简单的方法从已转换的m/d/y中分辨出未转换的y/m/d,并且日期是为任何实际目的而确定的。(尤其不是在2010年-例如,
    08/10/09
    可能意味着几个有效日期)

  • 另外,只存储日期的两位数是什么想法?这正是那种短视的吝啬行为,导致了Y2K时代的时间和金钱损失。(如果你要以日期格式存储日期,就要避免)


日期字段的列类型是什么?如果是日期或时间戳——您不能将Ymd重新排序为mdyThanks,那么应该可以很好地解决这个问题。然后我们可以向前推进,把场地的其余部分清理干净。它从ASP到PHP,从MS SQL到MySQL!它居然还站着,真是太神奇了!哈