如何在sql服务器中计算上一个leap年?

时间:2019-05-16 05:17:20

标签: sql-server-2012 powerbi

我需要在一份报告中计算生日计数。我知道如何编码才能知道a年,但无法编写用于查找上一个leap年的代码。

请提出一些简短代码,以获取最后的leap年。

3 个答案:

答案 0 :(得分:0)

CORDIC64_atan[24]={ 0.785398163397448, 0.463647609000806, 0.244978663126864, 0.124354994546761, 0.0624188099959574, 0.0312398334302683, 0.0156237286204768, 0.00781234106010111, 0.00390623013196697, 0.00195312251647882, 0.00097656218955932, 0.000488281211194898, 0.000244140620149362, 0.00012207031189367, 6.10351561742088E-05, 3.05175781155261E-05, 1.52587890613158E-05, 7.62939453110197E-06, 3.8146972656065E-06, 1.90734863281019E-06, 9.53674316405961E-07, 4.76837158203089E-07, 2.38418579101558E-07, 1.19209289550781E-07 };

答案 1 :(得分:0)

在SQL Server中,使用CTE获取最近四年,并从四年结果中应用applying年计算得出最后一个applying年。

有效查询是:

;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;

Demo on db<>fiddle

答案 2 :(得分:0)

老实说,“确定年份是否为a年”的正确算法是“使用提供您的日期/日期时间库的平台记录错误,因为这是应该向用户公开的基本功能”。 / p>

显然,他们必须在内部的datetime / datetime2 / datetimeoffset实现中实施“是is年”检查,但是由于某种原因,它拒绝在API中公开它。