1

我想要一个从 2-15-13 到 2-28-13 的一个月范围,但 Dateadd(mm,-1,'2-28-13') 会返回 1-15-13 到 1-28-13,我希望它在正确的月底结束,即 1-31-13。任何帮助表示赞赏。

(编辑/更新)

我想更清楚一点:

declare  @Lastmonth_StartDate datetime,
         @Lastmonth_EndDate datetime,
         @StartDate datetime = '2/15/13',
         @EndDate datetime = '2/28/13'

set @Lastmonth_EndDate=DATEADD(m,-1,@EndDate)
set @Lastmonth_StartDate =DATEADD(m,-1,@StartDate)
select @Lastmonth_StartDate, @Lastmonth_EndDate

我希望 1 月 31 日而不是 1 月 28 日,Lastmonth_EndDate如果开始日期是 2/1/13 - 2/15/13,我希望Lastmonth_EndDate成为上个月的 15 日。

-- 编辑 6/18

我正在尝试使用 IF 或 CASE 来完成这项工作,但效果不是很好,请问有什么线索吗?

4

2 回答 2

0

对于您使用的语法,我相信您使用 SQL Server,对于 SQL Server,您可以执行以下操作:

期间开始:

Convert(datetime, Convert(varchar(7),DateAdd(m, 0, '2-15-13'),121) + '-01 00:00:00.000', 121)

期末:

DateAdd(d, -1, Convert(datetime, Convert(varchar(7),DateAdd(m, 1, '2-28-13'),121) + '-01 23:59:59.997', 121)))
于 2013-06-17T19:47:03.897 回答
0

要获得年月的结束,请在该年月的第一个月加上一个月,然后减去 1 天。剩下的就是细节。

于 2013-06-17T19:24:52.113 回答