mysql 查询日期范围,日期为varchar类型,带中文 如:2019年07月30日,应该怎么写sql?

表数据如下:

clipboard.png

使用如下sql查询日期范围无效:

select * from sys_record where str_to_date(record_date,'%Y年%m月%d日') between '2019年7月29日' and '2019年08月04日';

clipboard.png

如果,要查询日期范围sql应该怎么修改?

阅读 6.4k
3 个回答

1、先将字符转换成date类型,示例:ifnull(str_to_date(record_date,'%Y-%m-%d'),str_to_date(record_date,'%Y年%m月%d日'))
2、查询条件,尽量用date格式可以识别的格式 如'2019-07-29' 而非 '2019年7月29日'

另外,这种每次都要转换再查询的效率很低,如表操作频繁建议增加扩展字段或将转换好的数据插入到新表,再做查询

做视图表。 转成int

你要把类型转换成相同的再比较。你这样类型不一样,查询时候又会自动转换成你比较的varchar 类型。所以查询不到

推荐问题