您的位置:首页 > 数据库 > Oracle

oracle 判断是否为闰年

2014-10-21 16:58 344 查看
最简单的方法就是判断2月是28天还是29天

SELECT CASE TO_CHAR(LAST_DAY(TO_DATE(&YEAR || '02', 'YYYYMM')), 'dd')
WHEN '28' THEN
'不是闰年'
ELSE
'闰年'
END RU
FROM DUAL;
这种方法是很简单,一般正常使用也是没问题的。但是存在缺陷。按闰年的规则(四年一闰,百年不闰,四百年再闰)

比如上面的输入 1100这种是属于 百年不闰 的,但是返回的结果却是闰年。

这里改写方法。
select case
when (MOD(&year, 4) = 0 and MOD(&year, 100) != 0) or --(四年一闰,百年不闰),(四百年再闰)
(MOD(&year, 400) = 0) then
'366'
else
'365'
end DAYS
from dual;
也就是多了层判断,这样是没有问题了的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  oracle 闰年