MySQL已经知道如何使用
STR_TO_DATE() function结合
DATE_FORMAT()使用的格式字符串本地解析许多不同类型的日期字符串.
所以,我根本不会在这个过程中涉及PHP,而是允许MySQL解析输入本身.
您需要使用的格式字符串是%d /%m /%Y%h:%i%p,其中%p表示AM / PM.
您可以在INSERT语句中使用整个表达式,直接从PHP传递字符串,假设您已经验证了它们的格式.
INSERT INTO your_table (timestamp_column) VALUES (STR_TO_DATE('20/10/2014 05:39 PM', '%d/%m/%Y %h:%i %p'));
…将正确插入DATETIME值2014-10-20 17:39:00到您的表中.
如果您真的更喜欢在PHP中使用它,请使用格式字符串’d / m / Y H:i A’使用DateTime::createFromFormat()(PHP 5.3)
$d = DateTime::createFromFormat('d/m/Y H:i A', '20/10/2014 05:39 PM');
var_dump($d);
class DateTime#2 (3) {
public $date =>
string(26) "2014-10-20 17:39:00.000000"
public $timezone_type =>
int(3)
public $timezone =>
string(15) "America/Chicago"
要从中获取MySQL格式的日期,
echo $d->format('Y-m-d H:i:s');
// 2014-10-20 17:39:00
如果您处于使用早于5.3的PHP版本的非常不幸的情况,您可以使用strptime()获得类似的结果,但是您需要将其数组输出组装成MySQL的字符串格式.