У меня есть дата в формате "jan 2011", но если я использую "jan 2011" и "mar 2011", это дает неправильные месяцы поэтому я хочу преобразовать varchar в числовой формат, чтобы я мог использовать между запросом в mysql заранее спасибо
вы должны преобразовать столбец столбца varchar в дату, что более безопасно. (varchar приводит к склонности к ошибкам)
используйте find_in_set
, чтобы сделать сопоставление
select find_in_set('jan', 'jan,feb,mar,apr,may,jun,jul,aug,sep,oct,nov,dec');
так
select
find_in_set(
substring_index(col, ' ', 1),
'jan,feb,mar,apr,may,jun,jul,aug,sep,oct,nov,dec'
)...
Добавьте столбец реальной даты в таблицу:
ALTER TABLE the_table
ADD COLUMN the_real_date_column DATE;
Используйте STR_TO_DATE
, чтобы вставить значение даты в этот столбец:
UPDATE the_table
SET the_real_date_column = STR_TO_DATE(the_bad_date_column, '%b %Y');
STR_TO_DATE
будет вставлять 0
для каждого не заданного значения - в этом случае - дневную часть даты. Таким образом, вы можете увеличить день до 1
следующим образом:
UPDATE the_table
SET the_real_date_column = the_real_date_column + 1;
Затем вы можете запросить столбец даты нормально, используйте BETWEEN
, все, что нужно.
Если вы видите старый столбец, вы можете его удалить следующим образом:
ALTER TABLE the_table
DROP COLUMN the_bad_date_column;