【SQL Server】月末的时间算法

2025-04-29 01:23:37

1、首先来说一下思路,我们在之前的经验中看到过月初的算法语句,那这次我们计算月末,是不是可以这样想,我们计算出下一个月的月初,然后减去1天,就变成当前月的月末了。那接下来,我们还是先定义好参数。

【SQL Server】月末的时间算法

2、我们还是需要这几个函数帮忙,dateAdd()和dateDiff()函数,对于时间操作来说,基本上就离不开这俩函数。我们一步一步的来,首先,我们先算出1900-01-01距离给定日期有多少个月。语法为:select datediff(month,'1900-01-01',@Date) as '月数'

【SQL Server】月末的时间算法

3、计算出相差月数以后,那我们就可以在这个月数上+1,然后计算出下一个月的第一天。语法为:select dateAdd(month,1+datediff(month,'1900-01-01',@Date),'1900-01-01') as '下一个月的第一天'

【SQL Server】月末的时间算法

4、最后,我们用下个月的第一天减去1天,就可以得到给定月的最后一天了。语法为:select dateAdd(day,-1,dateAdd(month,1+datediff(month,'1900-01-01',@Date),'1900-01-01')) as '本月的最后一天'

【SQL Server】月末的时间算法

5、那另外一个方法就是,我们将时间单位换成month来试试看,语法为:select dateAdd(month,1+datediff烫喇霰嘴(month,'1900-01-01',@Date),'1900-01-01')-1 as '本月最后一天'。其实原理很简单,我们利用month的时间单位计算出给定日期的下个月的第一天,然后减去1天就是给定日期当月的最后一天了。

【SQL Server】月末的时间算法

6、另一个思路就是,我们可以把1900-01-01抻吗笙匈减少一天为1899-12-31,这样的话,就和计算月初的语法是一样的了。语法为:s髫潋啜缅elect dateAdd(month,datediff(month,'1899-12-31',@Date),'1899-12-31') as '本月的最后一天'

【SQL Server】月末的时间算法

7、之前,我们也说过,1900-01-01可以用0代替,那这里的1899-12-31也可以用-1代替。其实结果还是一样的。

【SQL Server】月末的时间算法

8、那在月初的计算中,我们也有提到过,如果我想精确到时分秒,应该如何做呢?通过前面的经验,大家都知道如果想要骀旬沃啭时分秒,就需要day做时间单位,那来说一下思路:获取本月的第一天,然后加一个月,然后用下一个月的第一天减去1天即可。语法为:select dateAdd(month,1,dateAdd(day,1-datepart(day,@Date),@Date))-1as '本月最后一天'

【SQL Server】月末的时间算法
声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢