表t1
列c1 varchar 且格式与20130529这种格式相同.
1.直接比较
select * from t1 where c1 <= '20130529';
2.用函数转为date后再比较
select * from t1 where str_to_date(c1, '%Y%m%d') <= str_to_date('20130529', '%Y%m%d');
目前倾向于直接用第一种,因为建了索引,但是怕会出错,所以想请教大家两种写法哪种更好?
表t1
列c1 varchar 且格式与20130529这种格式相同.
1.直接比较
select * from t1 where c1 <= '20130529';
2.用函数转为date后再比较
select * from t1 where str_to_date(c1, '%Y%m%d') <= str_to_date('20130529', '%Y%m%d');
目前倾向于直接用第一种,因为建了索引,但是怕会出错,所以想请教大家两种写法哪种更好?
这两个写法有各自的优缺点:
select * from t1 where c1 <= '20130529';
这可以获得最高的查询性能。但是,为了避免c1格式在未来有变动导致错误,您也可以考虑:
在开发环境/测试环境中使用DATE函数验证:
select * from t1 where str_to_date(c1, '%Y%m%d') <= str_to_date('20130529', '%Y%m%d');
在确认结果正确性后,再在生产环境中使用直接比较,获得最佳性能。这种方式可以在灵活性和性能之间取得一个平衡。