Мне нужно получить 24-часовое время строки, но по какой-то причине я могу получить только 12-часовой, используя Mysql.

SELECT STR_TO_DATE('3/13/2018 9:28:07 PM',  '%m/%d/%Y %T');
+-----------------------------------------------------+
| STR_TO_DATE('3/13/2018 9:28:07 PM',  '%m/%d/%Y %T') |
+-----------------------------------------------------+
| 2018-03-13 09:28:07                                 |
+-----------------------------------------------------+

Я пробовал разные методы и думал, что он работает правильно, что так и было до полудня ....

Я пытаюсь использовать его, чтобы ограничить возвращаемые результаты только тем, что изменилось с момента последнего выполнения запроса.

0
Alan 14 Мар 2018 в 06:52

2 ответа

Лучший ответ

% T - это время в 24-часовом формате, поэтому STR_TO_DATE игнорирует часть вашего времени PM / AM. Вам нужно использовать% r. См. руководство подробности.

1
Nick 14 Мар 2018 в 04:07

Вам нужно преобразовать его в datetime с часовым поясом, а затем использовать формат даты% T.

Выберите DATE_FORMAT (STR_TO_DATE ('13.03.2018 9:28:07 PM', '% m /% d /% Y% r'), '% T')

21:28:07

0
âńōŋŷXmoůŜ 14 Мар 2018 в 04:26