MySQL дата-время подано: Усечено неверное значение даты-времени

#mysql #datetime #date-parsing

Вопрос:

Я пытаюсь преобразовать строку в формат mysql datetime. используя формат ниже. но это Truncated incorrect datetime value послание.

следуя этому формату страницы https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html#function_str-to-date

Как исправить эту функцию?

 update userdata set    validity_start_date=STR_TO_DATE('10/29/2015 2:12 PM','%m/%d/%Y %h:%i');
ERROR 1292 (22007): Truncated incorrect datetime value: '10/29/2015 2:12 PM'
 

Спасибо

Ответ №1:

У вас есть «PM» в вашей строке, не указывая для нее код формата.

 mysql> select STR_TO_DATE('10/29/2015 2:12 PM','%m/%d/%Y %h:%i') as d;
 --------------------- 
| d                   |
 --------------------- 
| 2015-10-29 02:12:00 |
 --------------------- 
1 row in set, 1 warning (0.00 sec)

mysql> show warnings;
 --------- ------ ---------------------------------------------------------- 
| Level   | Code | Message                                                  |
 --------- ------ ---------------------------------------------------------- 
| Warning | 1292 | Truncated incorrect datetime value: '10/29/2015 2:12 PM' |
 --------- ------ ---------------------------------------------------------- 
 

Используйте %p для части «AM»/»PM» :

 mysql> select STR_TO_DATE('10/29/2015 2:12 PM','%m/%d/%Y %h:%i %p');
 ------------------------------------------------------- 
| STR_TO_DATE('10/29/2015 2:12 PM','%m/%d/%Y %h:%i %p') |
 ------------------------------------------------------- 
| 2015-10-29 14:12:00                                   |
 ------------------------------------------------------- 
1 row in set (0.00 sec)
 

(Никакого предупреждения, когда вы это сделаете.)