为什么“Between”运算符不能在 mysql 中使用月份文本?

问题描述 投票:0回答:1

在我的数据集中,月份以“June-21”、“Aug-21”这样的格式存储。 对于 Between 查询:选择 sum(downloads) 从收视率 其中“10 月 21 日”和“12 月 21 日”之间的月份;
它获取空值,而使用 IN 运算符可以给出完美的结果。

使用 IN 运算符查询:SELECT SUM(downloads) AS total_downloads 从收视率 WHERE 中的月份 ('October-21', 'November-21' , 'December-21')

为什么查询 between 不起作用?

我尝试使用 IN 运算符,它起作用了。但我的问题是为什么它不适用于“between”? Dataviewerror with between operator

sql mysql operators between
1个回答
0
投票

那是因为

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
;
string_comp_test date_comp_test
真实

小提琴

© www.soinside.com 2019 - 2024. All rights reserved.