php - PHP将各种格式的日期转换为mysql DATE格式保存在数据库中

标签 php mysql datetime varchar

好吧,我手头有一些谜团。我有一堆各种不同格式的日期,其中大部分是美国格式。我需要将它们添加到 mysql 数据库的 DATE 字段中。因此,我编写了打击代码,以采用他们拥有的任何分隔符并将其替换为连字符,然后使用 strtotime 与日期函数结合将其转换为正确的格式。我以为我可以回家了,但是没有。

$q = "SELECT date_rendered, date_requested, record_id FROM client_svc_history";
$r = mysql_query($q) or die(mysql_error());

while($row = mysql_fetch_assoc($r)) {
    $record_id = $row['record_id'];
    echo $record_id.": ".$row['date_rendered']."  ";
    $date_rendered = preg_replace('~[^0-9]~','-',$row['date_rendered']);
    echo $date_rendered." ";
    $date_rendered = date('Y-m-d',strtotime($date_rendered));
    echo $date_rendered."<br> ";
    echo $record_id.": ".$row['date_requested']." ";
    $date_requested = preg_replace('~[^0-9]~','-',$row['date_requested']);
    echo $date_requested." ";
    $date_requested = date('Y-m-d',strtotime($date_requested));
    echo $date_requested."<br>";
}

我回显了数据,以便在使用它写回数据库之前确保它正常工作。

下面是我得到的输出示例。请注意,在记录 7 中,它花费了 03-23-2006 并将其清零。在记录 8 中,它毫无问题地处理相同的格式,在记录 11、12 和 13 中,它清零了另外 2 个我认为 strtotime 可以处理的格式。我很茫然。我很感激任何帮助。谢谢。

1: 0000-00-00 0000-00-00 1969-12-31
1: 2005-02-25 2005-02-25 2005-02-25
2: 0000-00-00 0000-00-00 1969-12-31
2: 0000-00-00 0000-00-00 1969-12-31
3: 2005-03-08 2005-03-08 2005-03-08
3: 2005-03-08 2005-03-08 2005-03-08
4: 2005-03-08 2005-03-08 2005-03-08
4: 2005-03-08 2005-03-08 2005-03-08
5: 2005-03-08 2005-03-08 2005-03-08
5: 2005-03-08 2005-03-08 2005-03-08
6: 2005-03-08 2005-03-08 2005-03-08
6: 2005-03-08 2005-03-08 2005-03-08
7: 03-23-2006 03-23-2006 1969-12-31
7: 03-23-2006 03-23-2006 1969-12-31
8: 04-10-2006 04-10-2006 2006-10-04
8: 04-10-2006 04-10-2006 2006-10-04
9: 04-10-2006 04-10-2006 2006-10-04
9: 04-11-2006 04-11-2006 2006-11-04
10: 2/10/2006 2-10-2006 2006-10-02
10: 02-10-2006 02-10-2006 2006-10-02
11: 11/29/2005 11-29-2005 1969-12-31
11: 11-29-2005 11-29-2005 1969-12-31
12: 11/29/2005 11-29-2005 1969-12-31
12: 11-29-2005 11-29-2005 1969-12-31
13: 01-26-06 01-26-06 1969-12-31
13: 01-26-2006 01-26-2006 1969-12-31

最佳答案

strtotime() 将无法准确渲染其中包含 - 的字符串日期,因为它会尝试从当前时间戳中扣除时间(例如-1天...)。尝试将连字符 - 替换为斜杠 /

关于php - PHP将各种格式的日期转换为mysql DATE格式保存在数据库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6715813/

相关文章:

PhpStorm 中 .htm 文件中的 PHP 代码样式

MySQL C API mysql_query

java - 如何输入数据类型 XMLGregorianCalendar 的日期/时间

r - 无法处理 POSIXct 时区并截断 POSIXct 对象的时间

php - 使用ajax将事件添加到mysql数据库

javascript - 脚本注入(inject) Joomla 模板

java - 执行 PHPUnit_Selenium

mysql - 如何进行选择并能够回退到默认值?

mysql - VB.NET MySQL 连接(数据库不是本地的)

python-3.x - 在第一列是周末日期的数据框中删除行