如何利用SQL语句计算某年某月有多少天

在参加的一个面试时被问到一个问题:如何利用SQL语句计算2036年的2月份有多少天?
首先想到的思路就是判断2036是闰年还是平年,然后可以判断2月份有多少天,利用下面方法判断平年还是闰年:
(1)年份能被4整除;
(2)年份若是100的整数倍的话,需被400整除,否则是平年。
既然被问到要用sql计算,现在的方法是没有用到任何sql,于是学习了下sql的方法:
第一种可以利用sql的“datediff”来计算:
SELECT DATEDIFF(day,'2036-2-1','2036-3-1') AS DiffDate
,计算结果是29
第二种利用异常来判断:
执行
SELECT * FROM Orders WHERE OrderDate='2035-2-29'

编译器会报错,如下:“服务器: 消息 242,级别 16,状态 3,行 1从 char 数据类型到 datetime 数据类型的转换导致 datetime 值越界。”因此不是2035-2-29是不合法的,那么再试一下2036-2-29:没有报异常,说明是合法的,那么就是29天了。
第三种利用dateadd来计算:
declare @temp datetime
set @temp = '2036-3-1'
select @temp
select dateadd(d,-1, @temp)

查询的结果是:
2036-02-29 00:00:00.000

以上是三种计算的方法,对于这个问题最重要的是要结合sql语言来计算,在sql中提供了多种计算时间的函数,包括datediff、dateadd等函数。

你可能感兴趣的:(sql,面试,D语言)