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.3k
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 类型。所以查询不到

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题