Я пытаюсь вставить 2 даты в британском формате (дд / мм / гггг) в базу данных MySQL в формате даты MySQL США.
Я использую str_to_date. Первый экземпляр str_to_date работает должным образом, но второй экземпляр всегда вставляет ту же дату, что и первый экземпляр str_to_date, даже если исходные даты отличаются.
$date_1 = "10/01/2016";
$date_2 = "16/02/2016";
$sql = "INSERT INTO customers (date_1, date_2)
VALUES (STR_TO_DATE( '$date_1', '%m/%d/%Y %h:%i' ), STR_TO_DATE( '$date_2', '%m/%d/%Y %h:%i' ))";
Как правильно обрабатывать несколько экземпляров str_to_date в операторе вставки MySQL?
Спасибо
Строка формата str_to_date()
сообщает MySQL, в каком формате находится значение даты первого аргумента. Дело не в том, как отформатировать значение в формате mysql (например, в месте назначения). Вывод str_to_date ВСЕГДА является собственным значением даты / времени mysql, которое yyyy-mm-dd hh:mm:ss
Поскольку вы говорите, что формат ввода monday/day
, но предоставляем day/month
ценности и НЕТ временные значения, вы получите сомнительные результаты.
Пытаться
24/01/2016
STR_TO_DATE( '$date_1', '%d/%m/%Y' )
вместо. Обратите внимание на удаление символов формата времени. Ваша входная строка не имеет значений времени вообще.
mysql> select str_to_date('24/01/2016', '%m/%d/%Y %h:%i');
+---------------------------------------------+
| str_to_date('24/01/2016', '%m/%d/%Y %h:%i') |
+---------------------------------------------+
| NULL |
+---------------------------------------------+
1 row in set, 1 warning (0.00 sec)
mysql> select str_to_date('24/01/2016', '%d/%m/%Y');
+---------------------------------------+
| str_to_date('24/01/2016', '%d/%m/%Y') |
+---------------------------------------+
| 2016-01-24 |
+---------------------------------------+
1 row in set (0.00 sec)
Других решений пока нет …