Предполагая, что в вашей базе данных хранится 5,2013
, вам нужно использовать DATE_FORMAT
после анализа строки:
SELECT DATE_FORMAT(STR_TO_DATE('5,2013','%m,%Y'), '%b %Y')
Почему? Потому что, похоже, у вас нет типа даты, хранящегося в базе данных. Таким образом, вы анализируете это до настоящего времени, используя STR_TO_DATE
. Это даст вам формат даты по умолчанию. DATE_FORMAT
позволяет применять другие форматирования к нему.
Все доступные значения форматирования документированы здесь: https://www.w3schools.com/sql/func_mysql_str_to_date.asp
В общем, я бы рекомендовал подумать о сохранении объекты даты вместо пользовательских строк даты, таких как 5,2013
. Это позволяет избежать этих кастингов, потому что вы можете напрямую использовать DATE_FORMAT
. Он также имеет преимущества по фильтрации / упорядочению и производительности. Используя типы дат, вы можете легко отсортировать по ним или отфильтровать, например, все за месяц X.
Я не говорю, что это невозможно с пользовательскими строками, такими как 5,2013
, но будет более сложным и может привести к снижению производительности если дБ растет.