什么是正确的格式传递给日期()函数在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”。
当前回答
对已接受答案的一个小补充:如果数据库datetime存储为UTC(我总是这样做),您应该使用gmdate('Y-m-d H: I:s')而不是date("Y-m-d H: I:s")。
或者,如果你更喜欢让MySQL处理所有事情,就像一些答案建议的那样,我会插入MySQL的UTC_TIMESTAMP,结果是一样的。
注:我理解的问题指的是当前时间。
其他回答
我使用这个函数(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;
}
这是一种更准确的方法。它把小数放在秒的后面,以提高精度。
$now = date('Y-m-d\TH:i:s.uP', time());
注意。up。
更多信息:https://stackoverflow.com/a/6153162/8662476
对已接受答案的一个小补充:如果数据库datetime存储为UTC(我总是这样做),您应该使用gmdate('Y-m-d H: I:s')而不是date("Y-m-d H: I:s")。
或者,如果你更喜欢让MySQL处理所有事情,就像一些答案建议的那样,我会插入MySQL的UTC_TIMESTAMP,结果是一样的。
注:我理解的问题指的是当前时间。
在PHP7+中使用DateTime类:
function getMysqlDatetimeFromDate(int $day, int $month, int $year): string
{
$dt = new DateTime();
$dt->setDate($year, $month, $day);
$dt->setTime(0, 0, 0, 0); // set time to midnight
return $dt->format('Y-m-d H:i:s');
}
我使用下面的PHP代码创建一个变量,将其插入到MySQL DATETIME列中。
$datetime = date_create()->format('Y-m-d H:i:s');
这将保存服务器的当前日期和时间。