使用PHP在SQL中为DATETIME转换日期

时间:2012-05-21 15:42:18

标签: php mysqli sqldatatypes type-conversion

我在PHP中有一个论坛,它接受表格中的日期 dd/mm/yyyy hh:mm:ss。但是,我需要将其作为DATETIME以SQL格式yyyy-mm-dd hh:mm:ss插入。我该如何转换这些数据?

4 个答案:

答案 0 :(得分:17)

您的日期时间格式错误:dd/mm/yyyy hh:mm:ss。可能你的意思是d/m/Y H:i:s

如果你有5.3+版本,有安全的方法将日期时间转换为另一种格式。这是一个例子:

$timestamp = '31/05/2001 12:22:56';
$timestamp = DateTime::createFromFormat('d/m/Y H:i:s', $timestamp);
echo $timestamp->format('Y-m-d H:i:s');

或者如果你喜欢更多的程序方式:

$timestamp = '31/05/2001 12:22:56';
$timestamp = date_create_from_format('d/m/Y H:i:s', $timestamp);
echo date_format($timestamp, 'Y-m-d H:i:s');

小心以前的建议。有些是完全错误的,有些可能会导致错误。

答案 1 :(得分:3)

您可以使用strtotime和date来重新格式化。

$new_date = date( "Y-m-d H:i:s", strtotime( $old_date ) );

这样做是取旧日期(dd/mm/yyyy hh:mm:ss),将其转换为unix时间戳,然后可以与php date函数一起使用,将日期格式化为所需的格式。

答案 2 :(得分:1)

几种可能的方式中的两种:

  1. 转换代码,然后将转换后的值传递给mysql:$mysqldate = date( 'Y-m-d H:i:s', $phpdate );
  2. 让mysql使用其内置函数完成工作: $query = "UPDATE table SET datetimefield = FROM_UNIXTIME($phpdate) ...";

答案 3 :(得分:1)

如果你有类似上述格式的日期时间,那么你只需要使用以下功能。

function localToMysql($dateTime){
  $date_chunks = explode('/', $dateTime);
    $time_chunks = explode(' ', $date_chunks[2]);
    $final_format = $time_chunks[0] . "-" . $date_chunks[1] . "-" . $date_chunks[0] . " " . $time_chunks[1];

返回$ final_format; }