2011-01-14 7 views
0

У меня есть дата в формате «jan 2011», но если я использую между «jan 2011» и «mar 2011», это дает неправильные месяцы , поэтому я хочу конвертировать VARCHAR в числовом формате, так что я могу использовать между запросом в MySQL заранее спасибоФормат даты: от varchar до integer

ответ

0

вы должны преобразовать столбец 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' 
)... 
0

Добавить реальный столбец даты в таблицу:

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 будет содержать t a 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; 
Смежные вопросы