проблема с конечными символами функции mysql STR_TO_DATE()

Я пытаюсь использовать функцию str_to_Date для преобразования строки, например

'30/09/2010 3:33:51 p.m.' and '30/09/2010 12:00:00 a.m.'(excluding quotations) 

для преобразования в дату и время.

Однако у меня возникли проблемы с добавлением последних символов «pm». или "утра" функционировать

То, что я пробовал, это

SET datecolumn = STR_TO_DATE(left(datecolumn(23), '%d/%m%Y %h:%i:%s %_.m.') 

‹---- возвращает код ошибки и

SET datecolumn = STR_TO_DATE(left(datecolumn(18), '%d/%m%Y %h:%i:%s') 

‹-- Но это исключает "утро" или "Пополудни"

ТИА


person Steven Cao    schedule 19.08.2020    source источник
comment
Символ формата %p обрабатывает AM и PM. Но я не знаю, справляется ли он с утра и после полудня. Ты это пробовал?   -  person Honeyboy Wilson    schedule 19.08.2020


Ответы (2)


Для управления AM/PM используйте p%

SET datecolumn = STR_TO_DATE(left(datecolumn(23), '%d/%m%Y %h:%i:%s %p') 

https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html

https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html#function_date-format

person scaisEdge    schedule 19.08.2020

Используйте REPLACE(), чтобы удалить точки с am/pm и применить правильный формат:

set datecolumn = str_to_date(
    replace(left(datecolumn, 24), '.', ''),
    '%d/%m/%Y %r'
)

Я использую функцию LEFT(), потому что она существует в вашем коде, хотя я не знаю, нужна ли она на самом деле.
См. демо.
Результаты:

| date                |
| ------------------- |
| 2010-09-30 15:33:51 |
| 2010-09-30 00:00:00 |
person forpas    schedule 19.08.2020