2014-10-17 62 views

回答

5
DECLARE @Year VARCHAR(4) 
SET @Year = '2013' 

SELECT DATEADD(DAY,-1,@Year+'0301') 
+0

缺少閏盤部分。也許:'SELECT LastDay = DAY(d.Day) ,IsLeap = CASE WHEN DAY(d.Day)> 28 然後'yes'ELSE'no'END FROM(SELECT Day = DATEADD(DAY,-1,年+'0301'))d' – 2014-10-17 14:38:01

+2

@TimSchmelter嗯,這個問題說,它應該返回二月的最後一天**或**如果是閏年。我選擇了第一個 – Lamak 2014-10-17 14:38:53

5

檢查是否可以通過4個或100或400

http://en.wikipedia.org/wiki/Leap_year

select case when 
    (
     (@year % 4 = 0) and (@year % 100 != 0) or 
     (@year % 400 = 0) 
    ) then 'LEAP' else 'USUAL' end 
; 
+0

你能詳細說明一下嗎? – Miki 2014-10-17 14:36:36

+0

這會計算閏年。當一年可以被4整除時,這是一個閏年,除非它也可以被100整除。例外情況是它也可以被400整除。所以當這種情況評估返回時,我們知道這是一個閏年;否則是正常的。 – 2014-10-17 16:02:23

0

整除這就是我想出了.....和它的作品

CREATE FUNCTION [dbo].[LastDayOfFeb] (@YEAR INT) 
RETURNS VARCHAR(8) 
AS 
    BEGIN 
     RETURN 
     (SELECT CASE datepart(mm, dateadd(dd, 1, cast((cast(@year as varchar(4)) + '0228') as datetime))) 
        WHEN 2 THEN '0229' + Cast(@YEAR AS VARCHAR(8)) 
        ELSE '0228' + Cast(@YEAR AS VARCHAR(8)) 
       END) 
    END 
+0

它的工作原理,但是錯誤的 – 2014-10-31 01:50:47

相關問題