2011-01-14 20 views
0

'jan 2011'のような形式の日付がありますが、 'jan 2011'と 'mar 2011'の間で使用すると間違った月が表示されます 番号の形式にvarchar型、私はMySQLでクエリの間で使用できるように、事前日付の形式:varcharから整数

答えて

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

は、あなたのテーブルに実際の日付カラムを追加します。

UPDATE the_table 
    SET the_real_date_column = STR_TO_DATE(the_bad_date_column, '%b %Y'); 

STR_TO_DATE

ALTER TABLE the_table 
ADD COLUMN the_real_date_column DATE; 

使用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;