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