我有一个旧表,该表的varchar列表示日期,格式为MM/DD/YYYY(eg 01/08/2015)。因为它是varchar,所以执行数据范围选择并不方便(当我使用<或>种类比较时,将转到varchar / string比较,这与日期比较的结果有所不同)。
MM/DD/YYYY
例如,我只选择日期在2015年8月8日到2015年10月10日之间的行。感谢任何智能解决方案,并且我无法在现有表中更改varchar的数据类型。
我正在使用MySQL Workbench / MySQL。
Varchar日期是邪恶的,它们不是真实日期,最好的解决方案是使用mysql的本地日期数据类型。
由于您无法更改数据类型,因此可以使用str_to_date()函数及其作用方式
str_to_date()
mysql> select str_to_date('01/08/2015','%d/%m/%Y') as d ; +------------+ | d | +------------+ | 2015-08-01 | +------------+
所以选择查询将是
select * from table_name where str_to_date(date_column,'%d/%m/%Y') between str_to_date('01/08/2015','%d/%m/%Y') and str_to_date('01/10/2015','%d/%m/%Y')