首页 > 解决方案 > 大查询:使用 between 函数对“日期”使用 case 命令

问题描述

我正在使用以下代码在我的数据库中创建一个包含季节的新列。

SELECT date, 
CASE 
WHEN date between DATE('2020-01-1') AND DATE('2020-03-20') THEN 'Winter'
WHEN date between DATE('2020-03-21') AND DATE('2020-06-21') THEN 'Spring'
WHEN date between DATE('2020-06-22') AND DATE('2020-08-23') THEN 'Summer'
WHEN date between DATE('2020-08-24') AND DATE('2020-12-21') THEN 'Fall'
END as season
FROM t

当我尝试运行此代码时,出现以下错误:

No matching signature for operator CASE for argument types: DATE, BOOL, STRING, BOOL, STRING, BOOL, STRING, BOOL, STRING, NULL at [2:7]

我不明白问题是什么。你能帮忙吗?谢谢

标签: sqlgoogle-bigquery

解决方案


Mikhail 指出,您可能在自己的工作区中有不同的查询。

您可以看到下面的查询工作正常:

with t AS (select DATE '2020-1-1' date)
SELECT date, 
CASE 
WHEN date between DATE('2020-01-1') AND DATE('2020-03-20') THEN 'Winter'
WHEN date between DATE('2020-03-21') AND DATE('2020-06-21') THEN 'Spring'
WHEN date between DATE('2020-06-22') AND DATE('2020-08-23') THEN 'Summer'
WHEN date between DATE('2020-08-24') AND DATE('2020-12-21') THEN 'Fall'
END as season
FROM t

推荐阅读