为什么“Between”操作符不能处理mysql中的月份文本?

pgx2nnw8  于 2023-05-16  发布在  Mysql
关注(0)|答案(1)|浏览(207)

在我的数据集中,月份以**'June-21','Aug-21'**这样的格式存储。
对于带有Between的查询:

Select sum(downloads) 
from ratings
where months between 'October-21'and 'December-21';

它获取空值,而使用IN运算符,它给出了完美的结果。
使用IN运算符查询:

SELECT SUM(downloads) AS total_downloads
FROM ratings 
WHERE months in ('October-21', 'November-21' , 'December-21')

为什么使用between的查询不起作用?
我尝试了IN操作符,它工作了。但我的问题是为什么它不适用于between
Dataviewerror with between operator

5gfr0r5j

5gfr0r5j1#

这是因为BETWEEN a AND B表示 * 大于或等于 * a * 且小于或等于 * b。
“October”的“O”在“December”的“D”之后,所以这两者之间没有任何关系。你在比较字符串,而不是日期。另请参阅此测试:

SELECT 
  CASE 
    WHEN 'October-21' < 'December-21' THEN 'TRUE'
    ELSE 'FALSE'
  END AS string_comp_test
, CASE 
    WHEN DATE '2021-10-01' < DATE '2021-12-01' THEN 'TRUE'
    ELSE 'FALSE'
  END AS date_comp_test
;
字符串压缩测试日期匹配测试
假的

fiddle

相关问题