如何利用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等函数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值