2016-08-26 4 views
0

Я добавляю пользователь выбрал метку времени MYSQL таблицы с помощью запросаMYSQL метка времени прихода утратившим на вставке

INSERT INTO schedule(pending_id, scheduled_time) 
VALUES (
"477", TIME(STR_TO_DATE("09/02/2016 12:33 PM", "%m/%d/%y %h:%i %p"))) 

Но значение поля SCHEDULED_TIME приходит в NULL в БД. В чем может быть проблема?

+0

Каков тип столбца 'schedule_time'? –

ответ

2

TIME() функция MySQL извлекает временную часть метку времени. Следовательно, ваш запрос INSERT так же, как это сделать:

INSERT INTO schedule (pending_id, scheduled_time) 
VALUES ("477", '12:33:00') 

Другими словами, вы на самом деле не вставив метку времени, а лишь фрагмент строки времени. Это приводит к введению значения NULL.

Вместо этого, вы должны просто остановились после вызова STR_TO_DATE:

INSERT INTO schedule (pending_id, scheduled_time) 
VALUES ("477", STR_TO_DATE("09/02/2016 12:33 PM", "%m/%d/%Y %h:%i %p")) 

который стал бы

INSERT INTO schedule (pending_id, scheduled_time) 
VALUES ("477", '2016-09-02 12:33:00') 

Update:

Я также изменил формат строки вы используете в STR_TO_DATE от

%m/%d/%y %h:%i %p 

в

%m/%d/%Y %h:%i %p 

поскольку ваша входная строка имеет год, как 4-х цифр (%Y), а не два (%y).

2

Попробуйте тот же запрос, но с прописной% Y (4-значный год):

INSERT INTO schedule(pending_id, scheduled_time) 
VALUES (
"477", TIME(STR_TO_DATE("09/02/2016 12:33 PM", "%m/%d/%Y %h:%i %p"))) 
+1

вставляется как 0000-00-00 00:00:00 –

+1

Я вижу, посмотрите на ответ Тима. Вы вставляете время в метку времени, поэтому вам нужно удалить функцию TIME() – ipeiro

+0

@ipeiro. Вы по-прежнему заслуживаете доверия для поиска проблемы '% y'. Это тоже было неправильно. –

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