sql 語句系列(閏年)[八百章之第十九章]

前言

判斷閏年仍是挺有用的。mysql

mysql

select DAY(LAST_DAY(DATE_ADD(CURRENT_DATE,INTERVAL -DAYOFYEAR(CURRENT_DATE)+1+31 DAY))) as dy
FROM T1

這個看起來有一點點複雜,其實拆開了仍是很簡單的。
CURRENT_DATE 獲取當前日期。sql

DATE_ADD(CURRENT_DATE,INTERVAL -DAYOFYEAR(CURRENT_DATE)+1+31 DAY)

當前的日期,減去了從1月1號經歷的天數而後加1,這個得到的就是1月1號。由於1月有31天,因此加上31,那麼就是今年的2月1號。code

LAST_DAY 是獲取該月的最後一天。因此就可以得出2月最後一天的日期了。server

sql server

with x(dy,mth) as
(
select dy,MONTH(dy)
from(
select dateadd(MM,1,(getdate()-datepart(dy,getdate()))+1) dy
from T1) tmp1
union all
select dateadd(dd,1,dy),mth
from x
where MONTH(dateadd(dd,1,dy))=mth
)
select MAX(DAY(dy))
from x

這麼一看有點複雜,原理是同樣的。blog

select dateadd(MM,1,(getdate()-datepart(dy,getdate()))+1) dy
from T1

獲取2月第一天,第一步和mysql是一致的。遞歸

而後就是遞歸2月的每一天,得出最後一天是28仍是29。get

相關文章
相關標籤/搜索