sql编程题怎么判断是闰年

时间:2025-01-24 21:49:22 游戏攻略

在SQL中,可以通过以下几种方法来判断一个年份是否是闰年:

根据全年总天数判断

```sql

DECLARE @date datetime;

SET @date = GETDATE();

SELECT CASE

WHEN DATEDIFF(day, DATEADD(year, DATEDIFF(year, 0, @date), 0), DATEADD(year, 1 + DATEDIFF(year, 0, @date), 0)) = 365 THEN '平年'

ELSE '闰年'

END

```

根据二月天数判断

```sql

SELECT CASE

WHEN DAY(DATEADD(month, 2, DATEADD(year, DATEDIFF(year, 0, @date) - 1))) = 28 THEN '平年'

ELSE '闰年'

END

```

使用CASE语句和日期函数

```sql

DECLARE @year int;

SET @year = YEAR(GETDATE());

SELECT CASE

WHEN @year % 4 = 0 AND @year % 100 != 0 OR @year % 400 = 0 THEN CAST(@year AS CHAR(4)) + '是闰年'

ELSE CAST(@year AS CHAR(4)) + '是平年'

END

```

使用PL/SQL程序

```sql

DECLARE year_number NUMBER;

is_leap_year BOOLEAN := FALSE;

BEGIN

-- 提示用户输入年份

year_number := &year_number;

-- 判断闰年的条件:

-- 1. 能被4整除,但不能被100整除;

-- 2. 能被400整除。

IF (MOD(year_number, 4) = 0 AND MOD(year_number, 100) != 0) OR MOD(year_number, 400) = 0 THEN

is_leap_year := TRUE;

END IF;

-- 输出结果

IF is_leap_year THEN

DBMS_OUTPUT.PUT_LINE(year_number || '是闰年');

ELSE

DBMS_OUTPUT.PUT_LINE(year_number || '不是闰年');

END IF;

END;

```

创建函数

```sql

CREATE FUNCTION dbo.IsLeapYear(@year INT) RETURNS CHAR(10) AS BEGIN

RETURN CASE

WHEN (@year % 4 = 0 AND @year % 100 != 0) OR (@year % 400 = 0) THEN '是闰年'

ELSE '不是闰年'

END

END;

```

这些方法都可以用来判断一个年份是否是闰年。你可以根据具体的需求和使用的数据库系统选择合适的方法。