Mysql 日期格式:从varchar到integer

Mysql 日期格式:从varchar到integer,mysql,sql,phpmyadmin,Mysql,Sql,Phpmyadmin,我的日期格式为“2011年1月”,但如果我在“2011年1月”和“2011年3月”之间使用,则给出的月份是错误的 因此,我想将varchar转换为数字格式,以便在mysql中使用中间查询 提前感谢您应该将varchar列转换为date列,这更简单 (varchar容易导致错误) 使用find_in_set进行映射 select find_in_set('jan', 'jan,feb,mar,apr,may,jun,jul,aug,sep,oct,nov,dec'); 所以 将真实日期列添加到表

我的日期格式为“2011年1月”,但如果我在“2011年1月”和“2011年3月”之间使用,则给出的月份是错误的 因此,我想将varchar转换为数字格式,以便在mysql中使用中间查询
提前感谢

您应该将varchar列转换为date列,这更简单
(varchar容易导致错误)

使用
find_in_set
进行映射

select find_in_set('jan', 'jan,feb,mar,apr,may,jun,jul,aug,sep,oct,nov,dec');
所以


将真实日期列添加到表中:

ALTER TABLE the_table 
 ADD COLUMN the_real_date_column DATE;
用于在该列中插入日期值:

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

STR_TO_DATE
将为每个未提供的值插入日期的日期部分。因此,您可以按如下方式将日期增加到
1

UPDATE the_table
   SET the_real_date_column = the_real_date_column + 1;
ALTER TABLE the_table 
DROP COLUMN the_bad_date_column;
然后,您可以正常查询日期列,使用
介于
之间,所有这些都是好东西。
如果看到旧专栏让您感到不安,您可以这样删除它:

UPDATE the_table
   SET the_real_date_column = the_real_date_column + 1;
ALTER TABLE the_table 
DROP COLUMN the_bad_date_column;