SQL Server SQL SELECT First Day and Last Day of the Month.

qrjkbowd  于 2023-06-28  发布在  其他
关注(0)|答案(5)|浏览(146)

Dearest professionals,

I have a query built to get the first and last day of the current month, but I'm having an issue with the time stamp for the First Day of the month.

declare @FirstDOM datetime, @LastDOM datetime

set @FirstDOM = (select dateadd(dd,-(day(getdate())-1),getdate()) )
set @LastDOM = (select dateadd(s,-1,dateadd(mm,datediff(m,0,getdate())+1,0)))

Since it's February of 2015, I would like to get results of:

@FirstDOM = 2015-02-01 00:00:00.000
@LastDOM = 2015-02-28 23:59:59.000

@LastDOM is correct, but I'm not getting the zeroes for the time stamp portion of @FirstDOM, I'm getting the correct date, but the time of the time I run the script. Say it's 8:50 a.m., I get:

2015-02-01 08:50:49.160

What is the best way to fix this little snafu?

Regards,

Nick

8ehkhllq

8ehkhllq1#

declare @FirstDOM datetime, @LastDOM datetime

set @FirstDOM = (select dateadd(d,-1,dateadd(mm,datediff(m,0,getdate()),1 )))
set @LastDOM = (select dateadd(s,-1,dateadd(mm,datediff(m,0,getdate())+1,0))) 
Print @FirstDOM
Print @LastDOM
kkbh8khc

kkbh8khc2#

Convert @FirstDOM to DATE as below:

declare @FirstDOM datetime, @LastDOM datetime

set @FirstDOM = (select CONVERT(DATE,dateadd(dd,-(day(getdate())-1),getdate())) )
set @LastDOM = (select dateadd(s,-1,dateadd(mm,datediff(m,0,getdate())+1,0))) 
SELECT @FirstDOM,@LastDOM

I hope this will help!

Thanks,

Swapnil

fgw7neuy

fgw7neuy3#

You can get the First and Last Day of the month using this:

SELECT DATEADD(mm, DATEDIFF(mm, 0, GETDATE()), 0)  ----First Day
SELECT DATEADD (dd, -1, DATEADD(mm, DATEDIFF(mm, 0, GETDATE()) + 1, 0)) ----Last Day
rn0zuynd

rn0zuynd4#

in addition to other answers, since SQL-Server 2012, Microsoft offers

EOMONTH ( start_date [, month_to_add ] )

More details on msdn

--

of topic: I stumbled on this question looking for First Day of Month in SQL which has been answered by others

mbjcgjjk

mbjcgjjk5#

multiple ways to do it

select dateadd(d,(day(getdate())-1)*-1,getdate())

I prefer the second method, output comes without a timepart

select dateadd(d,1,eomonth(getdate(),-1))

相关问题