Heim > Datenbank > MySQL-Tutorial > 月初 月末 sql 语句(日期所在月的第一天,最后一天)

月初 月末 sql 语句(日期所在月的第一天,最后一天)

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Freigeben: 2016-06-07 17:47:21
Original
4668 Leute haben es durchsucht

月初,计算给定日期所在月的第一天,月末,计算给定日期所在月的最后一天

月初,计算给定日期所在月的第一天

--这个计算的技巧是先计算当前日期到"1900-01-01"的时间间隔数,然后把它加到"1900-01-01"上来获得特殊的日期,这个技巧可以用---来计算很多不同的日期。
declare @date  datetime
set @date=getdate()
select dateadd(month,datediff(month,'1900-01-01',@date),'1900-01-01') as '所在月的第一天'
--精简算法,根据sql server的时间表示方式可知,'1900-01-01' 可以用0代替
select dateadd(month,datediff(month,0,@date),0) as '所在月的第一天'
--上面两种算法精确到天 时分秒均为00:00:00.000
--下面算法课以保留时分秒
--思路:用给定日期减去月第一天与给定日期差的天数
select dateadd(day,1-datepart(day,@date),@date)
go

--月末,计算给定日期所在月的最后一天

declare @date  datetime
set @date=getdate()
--思路:当前月的下一月1号在减1天
select dateadd(day,-1,dateadd(month,1+datediff(month,'1900-01-01',@date),'1900-01-01')) as '所在月的最一天'
select dateadd(month,1+datediff(month,'1900-01-01',@date),'1900-01-01')-1 as '所在月的最一天'
--1900-01-01 用0代替
select dateadd(day,-1,dateadd(month,1+datediff(month,0,@date),0)) as '所在月的最一天'
select dateadd(month,1+datediff(month,0,@date),0)-1 as '所在月的最一天'
--思路:与月初计算思路相同
select dateadd(month,datediff(month,'1989-12-31',@date),'1989-12-31') as '所在月的最一天'
--精简算法,'1989-12-31' 用-1代替
select dateadd(month,datediff(month,-1,@date),-1) as '所在月的最一天'
--保留时分秒的算法
select dateadd(day,-1,dateadd(month,1,dateadd(day,1-datepart(day,@date),@date)))
go

 

Verwandte Etiketten:
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage