TSQL日期函数的疑问

0
今天在看SQL SERVER教程的时候测试出来以下三种写法,同样都是利用某个月末日期作为锚点(原书描述如此),可以计算出查询日期所在的月末日期.但是测试在2月的时候出了问题:SELECT DATEADD(month,DATEDIFF(MONTH,'20171231','2016/2/1'),'20171231') AS A;--结果是 2016-02-29 00:00:00.000
SELECT DATEADD(month,DATEDIFF(MONTH,'20171130','2016/2/1'),'20171130') AS B;--结果是 2016-02-29 00:00:00.000
SELECT DATEADD(month,DATEDIFF(MONTH,'20170228','2016/2/1'),'20170228') AS C;--结果是 2016-02-28 00:00:00.000
 
请问为什么第三个查询C项的结果是 2016/2/28 而不是2016/2/29.
Tsql是怎么样的逻辑去判断第三种写法的?

TTT.jpg

 
 
已邀请:
0

li052468 2017-03-06 回答

30和31因为2月份没有,所以往前推,28号有,所以直接取

要回复问题请先登录注册