什么是正确的格式传递给日期()函数在PHP中,如果我想将结果插入到一个MySQL datetime类型列?
我一直在尝试date('Y-M-D G: I:s'),但每次都只是插入“0000-00-00 00:00:00”。
什么是正确的格式传递给日期()函数在PHP中,如果我想将结果插入到一个MySQL datetime类型列?
我一直在尝试date('Y-M-D G: I:s'),但每次都只是插入“0000-00-00 00:00:00”。
当前回答
这是一种更准确的方法。它把小数放在秒的后面,以提高精度。
$now = date('Y-m-d\TH:i:s.uP', time());
注意。up。
更多信息:https://stackoverflow.com/a/6153162/8662476
其他回答
我使用下面的PHP代码创建一个变量,将其插入到MySQL DATETIME列中。
$datetime = date_create()->format('Y-m-d H:i:s');
这将保存服务器的当前日期和时间。
我使用这个函数(PHP 7)
function getDateForDatabase(string $date): string {
$timestamp = strtotime($date);
$date_formated = date('Y-m-d H:i:s', $timestamp);
return $date_formated;
}
PHP的旧版本(PHP < 7)
function getDateForDatabase($date) {
$timestamp = strtotime($date);
$date_formated = date('Y-m-d H:i:s', $timestamp);
return $date_formated;
}
从php的date()手册页的注释:
<?php $mysqltime = date ('Y-m-d H:i:s', $phptime); ?>
你把“Y”写对了——那是一整年,但是“M”是一个有三个字符的月份,而“M”是一个有两位数字的月份。把D写成D也是一样。“G”是1位或2位小时,其中“H”在需要时总是以0开头。
IMO除了在前面的回答中提供的date()函数选项外,您还应该仔细考虑其使用的服务器时区设置,这可能与数据库设置不同。如果需要UTC时区,那么gmdate()函数(它具有与date()相同的选项)对于特定情况会更方便。
如果不使用时间戳,就没有必要使用PHP中的date()方法。如果dateposting是一个datetime列,你可以像这样插入当前日期:
$db->query("INSERT INTO table (dateposted) VALUES (now())");