如何将PHP中的日期转换为SQL格式? (并插入)

时间:2011-01-25 08:14:36

标签: php sql datetime

我正在尝试插入日期,让我们说CURDATE()到sql DateTime字段。

我的日期格式为:28/01/2008

当我尝试将其插入SQL时,我只得到了零。

那我怎样才能正确转换呢?

5 个答案:

答案 0 :(得分:24)

$newdate = date('Y-m-d', strtotime($olddate));

答案 1 :(得分:6)

  

我试图插入日期,比方说   CURDATE()到sql DateTime 字段。

$timestamp = strtotime($old_date);
$mydate = date('Y-m-d H:i:s', $timestamp);

答案 2 :(得分:6)

由于您使用的是欧洲日期符号(dd / mm / yyyy), strtotime 函数将返回0(而日期将转换为1970-01-01 )如果您不使用 - 作为分隔符。

因此,如果您想使用strtotime,那么您将不得不稍微更改日期字符串:

$olddate = '28/01/2008';
$newdate = strtotime(str_replace('/', '-', $olddate));

$ newdate现在应该包含'2008-01-28'...

答案 3 :(得分:3)

join('-',array_reverse(explode('/',$date)))

获取标准的YYYY-MM-DD Mysql日期格式。

或只使用MySQL'DATE_FORMAT

答案 4 :(得分:1)

  

我正在尝试插入一个日期,让我们说CURDATE()到一个sql DateTime字段。

为什么不直接使用MySQL功能?

insert tbl (id, other, datecol)
values(NULL, 'abcdef', CURDATE());
  

我的日期格式为:28/01/2008

如果它不是CURDATE(),而是一个dd / mm / yyyy格式的PHP变量,那么请参阅此MySQL man page以了解如何格式化文字。安全格式为YYYY-MM-DDYYYYMMDD,没有时间。

$date = '28/01/2008';
$query = "insert tbl (id, other, datecol)
          values(NULL, 'abcdef', '" . date('Ymd', strtotime($date)) . "');";

注意:yyyymmdd也是SQL Server中的有效格式。