【发布时间】:2011-06-09 00:06:06
【问题描述】:
我的日期格式为“2011 年 1 月”,但如果我在“2011 年 1 月”和“2011 年 3 月”之间使用,则会给出错误的月份 所以我想将 varchar 转换为数字格式,以便我可以在 mysql 中的查询之间使用 提前致谢
【问题讨论】:
标签: mysql sql phpmyadmin
我的日期格式为“2011 年 1 月”,但如果我在“2011 年 1 月”和“2011 年 3 月”之间使用,则会给出错误的月份 所以我想将 varchar 转换为数字格式,以便我可以在 mysql 中的查询之间使用 提前致谢
【问题讨论】:
标签: mysql sql phpmyadmin
你应该将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'
)...
【讨论】:
在表格中添加一个真实的日期列:
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;
【讨论】: