У меня в базе данных дата fetcha_pago
в формате: «08-Abr-2016» и это varchar. Когда я делаю следующее:
STR_TO_DATE(fecha_pago, '%d-%M-%Y')
Это не работает, потому что дата на испанском языке. Это должен быть «апрель» вместо «абр». Есть ли способ уважать «Абр» за месяц?
Хранение дат в виде строк вызывает всевозможные проблемы, и локаль является одной из них. Если вы можете преобразовать их в Формат ISO-8601, YYYY-MM-DD HH:MM:SS
в DATE
или же DATETIME
колонка.
Форматирование даты должно выполняться в PHP и только тогда, когда вы знаете локаль, в которую вы рендерите. Все в базе данных должно храниться в нейтральном формате. Строковые даты бесполезны, они не могут быть отсортированы или проиндексированы.
Вам, вероятно, придется соединить двенадцать REPLACE()
заявления вместе переписать название каждого месяца:
STR_TO_DATE(REPLACE(REPLACE(fetcha_pago, 'Ene', 'Jan'), 'Abr', 'Apr'), '%d-%M-%Y')
Это всего два уровня, но вы можете расширить, чтобы охватить все те, которые отличаются.
Других решений пока нет …