我做了一个代码来记录如果约会发生在1月1日到8月31日,那么它会返回约会的年份,如果是从9月1日到12月31日,它会是约会的年份+ 1。日期设置如下:2022年1月1日。
这是我想用的台词。我不太擅长SQL,但这是我应该提取年份的方式吗?还是我必须在代码的另一部分中进行提取?
case when "AppointmentDate" BETWEEN '1-SEP' AND '31-DEC' then EXTRACT(YEAR from "AppointmentDate" + 1) else (YEAR FROM "AppointmentDate") END "Years",
感谢您提前提出的任何建议或批评。
2条答案
按热度按时间wlwcrazw1#
这取决于
AppointmentDate
列的数据类型;它看起来像是date
(根据您使用的extract
函数)。如果是这样,那么它进一步取决于您使用的数据库。是Oracle吗?也许,当你使用Oracle SQL Developer。如果是这样的话,您必须从列的值中“提取”月和日,但不是您所做的方式;如果你不知道你在做什么,字符串是很难比较的。
我不是说这是最好的选择,但是-它可能会工作:使用
to_char
函数,提取月份和日期(mmdd
掩码)。请注意,between
是 inclusive,它将接受两个边界。也许你更愿意使用between '0101' and '0831'
。lg40wkob2#
您可以添加四个月并完全免除
case
: