在 SQL 的 month/day 级别定义季节

Define seasons at month/day level in SQL

我需要将日期按季节分组,但在 DAY-MONTH 级别,如下所示:

IFF(DATE BETWEEN 21.03 AND 21.06 THEN SPRING 
    22.06-22.09 = SUMMER
    23.09-21.12 = AUTUMN
    22.12-20.03 = WINTER)

我试过串联和 between 但运气不好。

试试下面的方法

CASE WHEN TO_VARCHAR(date_c,'DD-MM') BETWEEN '21-03' AND '21-06' THEN 'SPRING' END

IFF function allows a single condition. Use CASE 代替。

例子:

CASE 
        WHEN to_varchar(DATE,'DDMM') between '2103' and '2006' then 'SPRING'
        WHEN to_varchar(DATE,'DDMM') between '2106' and '2209' then 'SUMMER'
        WHEN to_varchar(DATE,'DDMM') between '2309' and '2012' then 'AUTUMN'
        ELSE                                                        'WINTER' 
END

使用case。使用字符串。并使用正确的日期格式:

(CASE WHEN to_char(DATE, 'MMDD') between '0321' and '0621' then 'SPRING'
      WHEN to_char(DATE, 'MMDD') between '0622' and '0922' then 'SUMMER'
      WHEN to_char(DATE, 'MMDD') between '0923' and '1220' then 'AUTUMN'
      ELSE 'WINTER' 
 END)