Как рассчитать последний високосный год в SQL Server? - PullRequest
0 голосов
/ 16 мая 2019

Мне нужно рассчитать количество дней рождения в одном из моих отчетов.Я знаю, как писать код, чтобы узнать високосный год, но не умею писать код, который можно использовать для нахождения последнего високосного года.

Пожалуйста, предложите короткий код, чтобы получить последний високосный год.

Ответы [ 2 ]

0 голосов
/ 16 мая 2019

В SQL Server, используя CTE, я получаю последние четыре года, а по результатам четырех лет применяю расчет високосного года, чтобы получить последний високосный год.

Рабочий запрос:

;WITH Last4Years AS (
     SELECT YEAR(GETDATE()) AS [YR]
     UNION ALL
     SELECT [YR] - 1
     FROM Last4Years 
     WHERE [YR] - 1 >= YEAR(DATEADD(YEAR, -3, GETDATE()))
)
SELECT [YR] AS LeapYear FROM (
    SELECT [YR], 
           CASE WHEN ([YR] % 4 = 0) AND ([YR] % 100 != 0) OR ([YR] % 400 = 0) THEN 1 ELSE 0 END AS Leap
    FROM Last4Years 
) L 
WHERE Leap = 1;

Демонстрация на дб <> скрипка

0 голосов
/ 16 мая 2019
DECLARE @fldYear INT=null
SET @fldYear = 2012
IF (((@fldYear % 4 = 0) AND (@fldYear % 100 != 0)) OR (@fldYear % 400 = 0))
PRINT '1'/*This is leap Year*/
ELSE
PRINT '0'/*This is not leap Year*/
...