Что правильный формат должен передать date()
функция в PHP, если я хочу вставить результат в MySQL datetime
ввести столбец?
Я пробовал date("Y-M-D G:i:s")
но это просто вставляет "0000-00-00 0:00:00" каждый раз.
Проблема в том, что вы используете 'M'
и 'D'
, которые являются текстовыми представлениями, MySQL ожидает числовое представление формата 2010 -02-06 19:30:13
Попробуйте: date ("Ymd H: i: s")
, в котором используются числовые эквиваленты.
править: переключено G
на H
, хотя это может не повлиять на результат, вы, вероятно, захотите использовать 24-часовой формат с ведущими нулями.
Вот альтернативное решение: если вы иметь дату в PHP в качестве метки времени, не обрабатывать ее с помощью PHP и позволить БД позаботиться о ее преобразовании с помощью функции FROM_UNIXTIME
.
mysql> insert into a_table values(FROM_UNIXTIME(1231634282));
Query OK, 1 row affected (0.00 sec)
mysql> select * from a_table;
+---------------------+
| a_date |
+---------------------+
| 2009-01-10 18:38:02 |
+---------------------+
Из комментариев на странице руководства php date ()
:
<?php $mysqltime = date ("Y-m-d H:i:s", $phptime); ?>
Вы правильно ответили «Y» - это полный год, но «M» - это месяц из трех символов, а «m» - месяц из двух цифр. Та же проблема с буквой D вместо d. «G» - это час, состоящий из 1 или 2 цифр, где «H» всегда начинается с 0, когда это необходимо.