2015-12-14 1 views
1

Я пытаюсь вставить 2 даты в формате Великобритании (dd/mm/yyyy) в базу данных MySQL в формате даты в формате MySQL.Как вы правильно используете несколько экземпляров str_to_date с инструкцией вставки 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?

Спасибо

+0

Вы можете указать свой php-код? –

+0

Вам не хватает запятой (',') в списке 'VALUES'. –

+2

Вам не хватает запятой после '' $ last_name', также отсутствует значение для user_id – Musa

ответ

1

Формата строка str_to_date() сообщает MySQL, какой формат значение даты первого аргумента находится. Это не так, как форматировать значение собирается в MySQL формата (например, назначение). Выход str_to_date всегда является родной MySQL даты/времени значение, которое yyyy-mm-dd hh:mm:ss

Так вы говорите, формат ввода является monday/day, но обеспечивают day/month значения и NO значения времени, вы получите шаткий результаты.

Попробуйте

      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) 
+0

Большое спасибо Марку! Я неправильно интерпретировал функцию str_to_date(). – Syn

Смежные вопросы