什么是正确的格式传递给日期()函数在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”。
当前回答
从php的date()手册页的注释:
<?php $mysqltime = date ('Y-m-d H:i:s', $phptime); ?>
你把“Y”写对了——那是一整年,但是“M”是一个有三个字符的月份,而“M”是一个有两位数字的月份。把D写成D也是一样。“G”是1位或2位小时,其中“H”在需要时总是以0开头。
其他回答
问题是,你正在使用'M'和'D',这是一个文本表示,MySQL期望一个数字表示的格式2010-02-06 19:30:13
试试:date('Y-m-d H:i:s'),它使用了数字等量。
edit:将G切换为H,虽然它可能没有影响,但你可能想使用24小时格式,前导0。
对已接受答案的一个小补充:如果数据库datetime存储为UTC(我总是这样做),您应该使用gmdate('Y-m-d H: I:s')而不是date("Y-m-d H: I:s")。
或者,如果你更喜欢让MySQL处理所有事情,就像一些答案建议的那样,我会插入MySQL的UTC_TIMESTAMP,结果是一样的。
注:我理解的问题指的是当前时间。
格式化MySQL DATETIME列的时间戳:
strftime('%Y-%m-%d %H:%M:%S',$timestamp);
$date_old = '23-5-2016 23:15:23';
//Date for database
$date_for_database = date ('Y-m-d H:i:s'", strtotime($date_old));
//Format should be like 'Y-m-d H:i:s'`enter code here`
我使用这个函数(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;
}