在MySQL中将异常的PHP日期格式从VARCHAR转换为DATETIME

在MySQL中将异常的PHP日期格式从VARCHAR转换为DATETIME,php,mysql,date,datetime,Php,Mysql,Date,Datetime,我在MySQL数据库的VARCHAR字段中有许多日期条目。 PHP的格式如下所示: UPDATE MyTableName SET Date2=str_to_date(Date1, '%Y-%m-%d %H:%M:%S'); 2015年1月25日星期日18:20:04+0000 我知道如何将日期/时间插入到正确的MySQL日期时间格式中(一旦我更正了PHP代码),但我想运行SQL查询来转换现有的DB条目。 在这里搜索了很多之后,我发现很多人都在建议这样的事情: UPDATE MyTableNam

我在MySQL数据库的VARCHAR字段中有许多日期条目。 PHP的格式如下所示:

UPDATE MyTableName SET Date2=str_to_date(Date1, '%Y-%m-%d %H:%M:%S');
2015年1月25日星期日18:20:04+0000

我知道如何将日期/时间插入到正确的MySQL日期时间格式中(一旦我更正了PHP代码),但我想运行SQL查询来转换现有的DB条目。 在这里搜索了很多之后,我发现很多人都在建议这样的事情:

UPDATE MyTableName SET Date2=str_to_date(Date1, '%Y-%m-%d %H:%M:%S');
然而,这似乎只是将“NULL”放在我的新列的所有行中。 这是因为MySQL无法处理带有str_to_date的特定PHP日期格式吗? 如果是这样的话,有人能提出其他更新该字段的方法吗。我不介意使用PHP或MySQL查询来实现这一点


非常感谢。

您的格式字符串与输入字符串根本不匹配<代码>太阳,1月25日将是
%a,%e%b
。因为您告诉mysql输入字符串应该类似于
yyyy-mm-dd hh:mm:ss
,所以它当然不会在日期字符串中找到任何匹配项。请注意,php没有“日期格式”。它有unix时间戳,任何格式都是用户选择的。另外,它应该是%i分钟而不是%m分钟吗?谢谢,但是我仍然使用以下方法在每个字段中得到空值:updatefiles SET StartDate2=str_to_date(StartDate,'%a,%e%b%H:%I:%S');或更新文件集StartDate2=str_至_日期(StartDate,%a,%e%b');甚至更新文件集StartDate2=str_至_日期(StartDate,'%a,%e%b%H:%i:%S+0000');我认为它需要匹配输出字符串(而不是输入),因此我的原始错误是..您的格式字符串与输入字符串根本不匹配<代码>太阳,1月25日将是
%a,%e%b
。因为您告诉mysql输入字符串应该类似于
yyyy-mm-dd hh:mm:ss
,所以它当然不会在日期字符串中找到任何匹配项。请注意,php没有“日期格式”。它有unix时间戳,任何格式都是用户选择的。另外,它应该是%i分钟而不是%m分钟吗?谢谢,但是我仍然使用以下方法在每个字段中得到空值:updatefiles SET StartDate2=str_to_date(StartDate,'%a,%e%b%H:%I:%S');或更新文件集StartDate2=str_至_日期(StartDate,%a,%e%b');甚至更新文件集StartDate2=str_至_日期(StartDate,'%a,%e%b%H:%i:%S+0000');我认为它需要匹配输出字符串(而不是输入),因此出现了最初的错误。。