2014-08-28 3 views

ответ

1

В качестве простого ISO 8601 представления оно almost what MySQL understands. Единственное, что является проблематичной проблемой, это «Z», поскольку MySQL не поддерживает часовые пояса и не игнорирует «Z».

Таким образом, просто немного поднимите формат (это не общее решение для всех дат, но оно делает настоящим действительным решением для этой проблемы, когда дата не используется или не проверена до SQL);

$iso = "2014-08-25T20:02:24.000Z";  // literal JSON text 
$iso = preg_replace("/Z$/", "", $iso); // -> "2014-08-25T20:02:24.000" 

И вставьте его в MySQL как нормальный (with placeholders) как струна;

$msqli_stmt->bind_param("s", $iso); 
$pdo_stmt->bindValue(":dt", $iso); 

Рассмотрите этот пример SQL;

create table x (y datetime) 
insert into x (y) values ('2014-08-25T20:02:24.000') 
select * from x 
--> August, 25 2014 20:02:24+0000 
1

Это ISO 8601 date. Вы можете преобразовать его непосредственно к DateTime объекта с:

$date = new DateTime('2014-08-25T20:02:24.000Z'); 

Или метку времени для использования с классическими функциями времени PHP с strtotime():

$time = strtotime('2014-08-25T20:02:24.000Z'); 

После того, как вы есть, что просто превратить его в формат MySQL использует, Y-m-d H:i:s, с помощью одного из тех, кто:

$to_mysql = $date->format('Y-m-d H:i:s'); 
$to_mysql = date('Y-m-d H:i:s', $time); 
Смежные вопросы