Home > Database > Mysql Tutorial > 月初 月末 sql 语句(日期所在月的第一天,最后一天)

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

WBOY
Release: 2016-06-07 17:47:21
Original
4616 people have browsed it

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

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

--这个计算的技巧是先计算当前日期到"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

 

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template