日期格式:从varchar到整数

时间:2011-01-14 07:44:25

标签: mysql sql phpmyadmin

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

2 个答案:

答案 0 :(得分: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'
)...

答案 1 :(得分: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将为未提供的每个值插入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;