我需要转换日期
DD Month, YYYY
到YYYY-MM-DD
将存储在MySQL表中。
我用PHP函数执行此操作,但我想知道db本身是否修改它是否更好。存储过程,也许?
答案 0 :(得分:1)
我会在PHP中处理它。如果始终以date
格式将YYYY-MM-DD
值传递给数据库,则会更简单。我建议不要使用数据库来转换字符串格式,无论是对数据库进行额外的往返转换,还是转换是在SQL中完成的。
有足够的工作来使数据库代码正确。
如果你单独调用进行转换,那就是额外往返数据库的开销,以及准备语句,绑定参数,执行,检索结果集的所有PHP代码。
您建议添加存储过程,这在数据库中是不必要的;另一个必须维护的对象,可能在多个数据库中。
如果在SQL中进行转换,则会增加额外的函数调用和复杂性......数据库应如何处理无效的日期值'Feb 30, 2014'
。处理是否适合您的应用程序,以及MySQL设置如何影响该行为。
我认为你可以更好地处理PHP中的转换和验证,在那里你有更多的控制权。
话虽如此,可以在MySQL中进行转换。最简单的方法是使用STR_TO_DATE
功能。您需要指定字符串的格式,并且该函数在无法确定预期日期时返回NULL,并返回“无效”日期值,例如
STR_TO_DATE('Frumiest 22, 2011','%M %d, %Y') = NULL
STR_TO_DATE('February 30, 2012','%M %d, %Y') = '2012-02-30'
如何处理“无效日期”值并将其存储在DATE列中取决于MySQL的版本,是否启用“严格”模式,ALLOW_INVALID_DATES
变量的设置等。
答案 1 :(得分:0)
mysql_query("UPDATE `Table` SET `date` = STR_TO_DATE(`date`, '%d-%m-%Y')");
答案 2 :(得分:0)
UPDATE `Table`
SET `date` = DATE_FORMAT(STR_TO_DATE(`date`, '%d %M, %Y'), '%Y-%m-%d')