sql不正确的日期输出不正确



我有一个类似的表

|id|  date        |name|
1    23/11/20    jake
2    01/07/20    jhon
3    23/05/20    blake
4    11/02/20    drake
5    1/03/14     crake

我运行了一个类似的查询

WHERE date >= '1/07/20' AND date <= '23/11/20'  

我期待着一个结果,我只会得到那些日期之间的结果但我得到了一些2014年的结果

日期列的数据类型为varchar#注意,我不能更改的数据类型

我怎么能只得到两者之间的日期?

字符串比较是个问题:通常,'10/01/19'(2019年1月10日(大于'01/01/20'(2020年1月1日(,因为前者从1开始,后者从0开始。

您需要将这些字符串转换为日期,然后才能进行比较:

where str_to_date(date, '%d/%m/%y') between '2020-07-01' and '2020-66-23'

效率低下,因为在进行筛选之前需要转换整个列。我强烈建议修复您的数据模型,并将日期存储为dates。

附带说明:您的字符串需要一致地格式化为mm/dd/yy才能工作;如果你有不同的格式,或者字符串没有映射到有效的日期,那么你会遇到比这里所问的更大的问题。

相关内容

  • 没有找到相关文章