使用str_to_date将varchar转换为日期

时间:2012-04-12 19:23:57

标签: mysql date

我正在尝试转换正在导入到我的数据库中的表(csv)中的列中的varchar值。现在我事先没有关于日期在csv文件中可能具有的格式的任何信息。我需要检查列中的所有值,如果有效,将这些列转换为mysql的DATE数据类型。问题是如果我使用str_to_date并且日期格式不同,那么存储过程会抛出错误并停止执行。我需要一种方法来忽略该错误,以便存储过程可以完成其迭代。

另外,我打算使用结果值来验证内容是否是有效日期?有没有更好的方法呢?请记住,我没有关于原始数据可能具有的日期格式的信息。

例如日期可以是'11 -Apr-2011','20110102','01 -05-2011'等。 我需要支持4-5种格式。 感谢。

1 个答案:

答案 0 :(得分:0)

由于您事先不知道日期的格式,您可以使用preg_match处理所有日期,例如:

$regex = '<matches for dates>';
if (preg_match($regex, $stringToCheck)) {
    str_to_date($stringToCheck);
} else {
}

我不知道如何处理未知案例而不为他们创建多个案例。 PHP如何知道格式是mm / dd / yy与dd / mm / yy?