mysql计算当前月的第一天的最后一日、上月的第一天和最后一天、每年的第一天和最后一天、每月的第一天和最后一日
原创1本月的第一天
前两种方法在网上广为流传,第三种是我自己的想法。
--(1)首先计算当前时间,然后1900年01月01一天中的月份差异,然后在1900年01月01在日期的基础上增加本月的差额。,这是当月的第一天。
SELECT DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)
--结果:2018-08-01 00:00:00.000
--(2首先计算当前天数,找出一个负数。,然后加1天,则当前日期-(日期天数-1),然后获取当月1号的日期
SELECT CONVERT(CHAR(10),DATEADD(dd,-DAY(GETDATE())+1,GETDATE()),120)
--结果:2018-08-01
--(3)首先找出当前时间120字符串的格式,并被截断。8位,得到2018-08,然后添加字符串01,最后用dateadd功能转换。
select dateadd(dd,0,CONVERT(nvarchar(8),GETDATE(),120)+01);
--结果:2018-08-01 00:00:00.000
2这个月的最后一天
--(1)首先计算当前时间,然后1900年01月01一天中的月份差异+1,然后在1900年01月01在日期的基础上增加本月的差额。+1,是当前月份的下一个月。01日,然后减去2毫秒。
--网上都是-3毫秒得到997毫秒,在我的测试之后-2/-3/-4以毫秒为单位获得的结果是997毫秒,如果-5得到的毫秒数。993毫秒。这其中的原因还有待探讨!
SELECT dateadd(ms,-2,DATEADD(mm, DATEDIFF(mm,0,getdate())+1, 0))
--得到结果:2018-08-31 23:59:59.997
--(2首先求出下个月的第一天,然后减去它。3毫秒。
select dateadd(ms,-3,dateadd(mm,1,CONVERT(nvarchar(8),GETDATE(),120)+01));
--结果;2018-08-31 23:59:59.997
3上个月第一天
--从这个月的第一天减去一个月,不是一个例子。
SELECT dateadd(mm,-1,DATEADD(mm, DATEDIFF(mm,0,getdate()), 0))
--结果:2018-07-01 00:00:00.000
4上个月的最后一天
--在每月的第一天减去3毫秒
SELECT dateadd(ms,-3,DATEADD(mm, DATEDIFF(mm,0,getdate()), 0))
--结果:2018-07-31 23:59:59.997
5下个月的第一天
SELECT DATEADD(mm, DATEDIFF(mm,0,getdate())+1, 0)
--结果:2018-09-01 00:00:00.000
6下个月的最后一天
select dateadd(ms,-3,CONVERT(nvarchar(8),dateadd(mm,2,GETDATE()),120)+01);
7今年的第一天
--原则与本月1日相同。
select dateadd(yy,datediff(yy,0,getdate()),0);
--结果:2018-01-01 00:00:00.000
8,一年的最后一天
select dateadd(ms,-3,dateadd(yy,datediff(yy,0,getdate())+1,0));
--结果:2018-12-31 23:59:59.997
9,一周的第一天
select dateadd(ww,datediff(ww,0,getdate()),0);
--结果:2018-08-20 00:00:00.000
10,一周的最后一天
select dateadd(ms,-3,dateadd(ww,datediff(ww,0,getdate())+1,0));
--结果:2018-08-26 23:59:59.997
后记:
每个人都有不同的理解,可以自由组合上述功能来获得所需的时间。每个人都有更简单、更容易理解的东西,可以相互交流和学习。
版权声明
所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除
itfan123



