SQL返回上个月的第一天和当前月份@ 00:00:00

goo*_*ike 4 sql

我正在使用此代码

declare @mydate datetime select @mydate = getdate()
declare @startdate varchar(20)  SELECT @StartDate = CONVERT(varchar(20),DATEADD(dd,-(DAY(DATEADD(mm,1,@mydate))-1),DATEADD(mm,-1,@mydate)),120)
declare @enddate varchar(20) SELECT @EndDate = CONVERT(varchar(20),DATEADD(dd,-(DAY(@mydate)-1),@mydate),120)
Select @startdate as 'Start Date', @enddate as 'End Date'
Run Code Online (Sandbox Code Playgroud)

要确定报告的上一个月和当前月的第一天,但​​它会根据当前时间给出时间.我怎样才能得到

2011-04-01 00:00:00
&
2011-05-01 00:00:00
Run Code Online (Sandbox Code Playgroud)

gbn*_*gbn 31

使用DATEADD/DATEDIFF技巧:

SELECT
   DATEADD(month, DATEDIFF(month, 0, GETDATE())-1, 0),
   DATEADD(month, DATEDIFF(month, 0, GETDATE()), 0)
Run Code Online (Sandbox Code Playgroud)

  • +1不使用字符串方法.但是,如果他正在使用MSSQL2008,他可以转换为"DATE" (5认同)