什么是正确的格式传递给日期()函数在PHP中,如果我想将结果插入到一个MySQL datetime类型列?

我一直在尝试date('Y-M-D G: I:s'),但每次都只是插入“0000-00-00 00:00:00”。


当前回答

这里有一个替代的解决方案:如果在PHP中将日期作为时间戳,那么不用PHP处理它,而是使用FROM_UNIXTIME函数让DB负责转换它。

mysql> insert into a_table values(FROM_UNIXTIME(1231634282));
Query OK, 1 row affected (0.00 sec)

mysql> select * from a_table;

+---------------------+
| a_date              |
+---------------------+
| 2009-01-10 18:38:02 |
+---------------------+

其他回答

我使用下面的PHP代码创建一个变量,将其插入到MySQL DATETIME列中。

$datetime = date_create()->format('Y-m-d H:i:s');

这将保存服务器的当前日期和时间。

这里有一个替代的解决方案:如果在PHP中将日期作为时间戳,那么不用PHP处理它,而是使用FROM_UNIXTIME函数让DB负责转换它。

mysql> insert into a_table values(FROM_UNIXTIME(1231634282));
Query OK, 1 row affected (0.00 sec)

mysql> select * from a_table;

+---------------------+
| a_date              |
+---------------------+
| 2009-01-10 18:38:02 |
+---------------------+

这是一种更准确的方法。它把小数放在秒的后面,以提高精度。

$now = date('Y-m-d\TH:i:s.uP', time());

注意。up。

更多信息:https://stackoverflow.com/a/6153162/8662476

从php的date()手册页的注释:

<?php $mysqltime = date ('Y-m-d H:i:s', $phptime); ?>

你把“Y”写对了——那是一整年,但是“M”是一个有三个字符的月份,而“M”是一个有两位数字的月份。把D写成D也是一样。“G”是1位或2位小时,其中“H”在需要时总是以0开头。

用PHP格式化MySQL datetime

$date = "'".date('Y-m-d H:i:s', strtotime(str_replace('-', '/', $_POST['date'])))."'";