2015-11-14 2 views
1

Мне нужно отформатировать и вставить дату в таблицу mysql, которая является типом datetime, я делаю это с php.Формат даты Mysql для вставки в таблицу

Вот заявление

$timestamp ="22-11-2015+00:00:00"; 
$mysqltime = date ("d-m-Y H:i:s", $timestamp); 

Но когда я вставляю в таблицу дата неверна, она показывает 31-12-1969 19:00:22

Что может быть проблема?

+0

Вы не имеете времени на эту дату, то 'ы часовой пояс смещение – Mihai

ответ

3

Это должно быть

$timestamp ="22-11-2015+00:00:00"; 
$mysqltime = date ("d-m-Y H:i:s", strtotime($timestamp)); 

потому date ожидает, что это второй параметр будет несколько, в частности количество секунд, прошедших с полуночи 1 января 1970 года

+0

Привет спасибо за ответ, теперь qurey выглядит нормально' вставить в таблице значений («имо»,» удаленный ',' cam1 ',' 22-11-2015 00:00:00 ',' NULL ',' NULL ',' RECOG ',' test.jpg ') ', но когда я смотрю на таблицу, я вижу столбец datetime '0000-00-00 00: 00: 00' через phpmyadmin – Haris

+0

Выполняя приведенный выше код, я получаю' 01-01-1970 01: 00: 00'. Почему это? –

+0

@ HasseBjörk Поскольку он неверен для преобразования даты, если ваш формат даты не является '' Ymd H: i: s'', вы должны использовать [date_create_from_format] (http://php.net/manual/en/datetime.createfromformat .php) вместо 'strtotime' и указать фактический формат, который вы используете –

1

Я думаю, что Corret формат будет:

$mysqltime = date_format ($timestamp,"d-m-Y H:i:s"); 

Позвольте мне знать, если это работает

1

Функция даты ожидает целочисленную временную метку для второго аргумента.

Это MSQL вставки заявление будет работать нормально:

INSERT INTO mytable (birthday) ('2015-11-22 00:00:00') 

Если вы используете класс базы данных в PHP и функцию вы призывающую использует объект даты PHP, то вам придется построить объект даты PHP, используя функцию date().

Или если вы хотите использовать PHP-код для форматирования даты на PHP перед отправкой строки в базу данных, которую нужно вставить, то я думаю, вы бы использовали strtodate для получения объекта даты PHP, а затем date()

$phpdate = strtodate('d-m-Y H:i:s', '22-11-2015 00:00:00') 
$dateformysql = date('Y-m-d H:i:s', $phpdate) 
databaseclass.dotheinsert($mysqldate) 
1

Это должно работать, но не работает для меня!

$timestamp ="22-11-2015+00:00:00"; 
$mysqltime = date ("d-m-Y H:i:s", strtotime($timestamp)); 

Я считаю, что это потому, что мой национальный стандартный формат (LC_TIME) является "Y-м-д", а затем "d-м-Y". Однако это прекрасно работает:

$timestamp ="22-11-2015+00:00:00"; 
// The '+' sign needs to be escaped!! 
$time = date_create_from_format("d-m-Y\+H:i:s", $timestamp); 
$mysqltime = $time->format('d-m-Y H:i:s'); 

С другой стороны, MySQL использовать формат даты "YYYY-MM-DD" в качестве стандарта. Правильная строка формата должна быть:

$mysqltime = date ("Y-m-d H:i:s", strtotime($timestamp)); 
// or second option 
$mysqltime = $time->format('Y-m-d H:i:s'); 
Смежные вопросы