sql 判斷閏年判斷當前年份是否閏年。
sql 判斷閏年 問題描述
判斷當前年份是否閏年。
sql 判斷閏年 解決方案
如果你已經有了一段時間的 sql 程式設計經驗,那麼你肯定知道本問題有多種解法。我也嘗試過多種解決方案,它們都能給出正確答案,但是本例項提供的方案可能是最為簡單的。下面的解決方案僅僅檢查 2 月的最後一天:如果有 2 月 29 日,則當前年份是閏年。
db2使用 with 子句遞迴查詢返回 2 月的每一天,然後呼叫聚合函式 max 確認 2 月的最後一天。
oracle
使用 last_day 函式找出 2 月的最後一天。
postgresql
使用 generate_series 函式返回 2 月的每一天,然後呼叫聚合函式 max 找出 2 月的最後一天。
mysql
使用 last_day 函式找出 2 月的最後一天。
sql server
使用 with 遞迴查詢返回 2 月的每一天,然後呼叫聚合函式 max 確認 2 月的最後一天。
sql 判斷閏年 擴充套件知識
db2遞迴檢視 x 裡的內嵌檢視 tmp1 按照下面的步驟返回 2 月的第一天。
(1) 從當前日期開始;
(2) 呼叫 dayofyear 函式確認當前日期是當前年份的第幾天;
(3) 從當前日期裡減去上述步驟算出的那個數字以得到上一年的 12 月 31 日,然後加上 1 天得到當前年份的 1 月 1 日;
(4) 再加上 1 個月得到 2 月 1 日。
上述步驟的運算結果如下所示。
然後,呼叫 month 函式找出內嵌檢視 tmp1 返回的日期對應的月份。
到此為止的結果只是作為生成 2 月的每一天的遞迴操作的起點。為了獲得 2 月的每一天,不斷為 dy 加上 1 天,直到月份不再是 2 月為止。該 with 計算的部分結果如下所示。
最後,針對 dy 列呼叫 max 函式返回 2 月的最後一天;如果是 29 日的話,則當前年份是閏年。
oracle
首先,呼叫 trunc 函式找出當前年份的第一天。
由於 1 月 1 日是一年中的第一天,下一步就是在此基礎上加上 1 個月得到 2 月 1 日。
然後,呼叫 last_day 找出 2 月的最後一天。
最後,呼叫 to_char 得到 28 或者 29(這一步不是必需的)。
postgresql
首先觀察內嵌檢視 tmp1 返回的結果。呼叫 date_trunc 函式得到當前年份的第一天,並將其轉換為 date 型別。
然後,在當前年份第一天的基礎上加上 1 個月,得到 2 月的第一天,並轉換為 date 型別。
接著,從內嵌檢視 tmp1 裡返回 dy,並依據 dy 計算出月份的值。呼叫 to_char 函式返回月份的值。
到此為止的計算結果構成了內嵌檢視 tmp2 的結果集。下一步要用到乙個非常有用的函式 generate_series 來生成 29 行資料(值從 1 逐一遞增到 29)。generate_series 函式返回的每一行(別名為 x)都和內嵌檢視 tmp2 的 dy 相加。部分結果如下所示。
最後,呼叫 max 函式找出 2 月的最後一天。針對該日期值呼叫 to_char 函式將得到 28 或者 29。
mysql
首先找出當前年份的第一天:先計算出當前日期是當前年份的第幾天,用當前日期減去該值,然後再加上 1 天。date_add 函式能完成這一步。
接著,再次呼叫 date_add 函式在上述計算結果的基礎上加上 1 個月。
現在得到了 2 月 1 日的日期值,接著呼叫 last_day 函式找出 2 月的最後一天。
最後,呼叫 day 函式返回 28 或者 29(這一步不是必需的)。
sql server
該解決方案利用 with 遞迴查詢生成 2 月的每一天。第一步先找出 2 月的第一天。為達到此目的,先找出當前年份的第一天:計算出當前日期是當前年份的第幾天,用當前日期減去該值,然後再加上 1 天。既然有了當前年份的第一天,呼叫 dateadd 函式加上 1 個月,就能得到 2 月的第一天了。
接著,返回 2 月的第一天,並計算出該日期對應月份的數值形式。
然後利用 with 子句的遞迴特性,不斷為內嵌檢視 tmp1 返回的 dy 加上 1,直到日期對應的月份不再是 2 月,部分結果如下所示。
現在得到了 2 月的每一天,最後呼叫 max 函式看一下最後一天是 28 日還是 29 日。還可以呼叫 day 函式返回數字 28 或者 29,而不是乙個日期值;不過,這一步不是必需的。
mysql中求閏年的函式 mysql生日提醒,閏年
如果您的演算法取決於該人的出生年份,則顯然存在問題.要解決此問題,首先在當前日期之後找到每個人的下乙個生日,然後計算該日期與現在之間的差異.select u birth,datediff next birthday,now as distance from select adddate birthd...
SQL注入中的MySQL特殊函式
4 查詢拼接函式使用 在滲透測試中,有時會遇到字串在前端被截斷的情況,爆出的資料也就不完整,此時mysql的一些函式就非常好用了 group concat 將組中的字串連線成為具有各種選項的單個字串。concat s1,s2.sn 將字串 s1,s2 等多個字串合併為乙個字串 concat ws x...
求1000 2023年間閏年的數量
首先我們說閏年的定義是 1 非整百年能被4整除的為閏年 如2004年就是閏年,1900年不是閏年 2 整百年能被400整除的是閏年 如2000年是閏年,1900年不是閏年 3 對於數值很大的年份,這年如果能被3200整除,並且能被172800整除則是閏年。如172800年是閏年,86400年不是閏年...