我想要一个月的范围从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
而不是jan 28,我希望jan 31代表Lastmonth_EndDate
,如果开始日期是2/1/13 - 2/15/13,我希望Lastmonth_EndDate
成为第15个上个月。
- 编辑6/18
我正在尝试使用IF或CASE来完成这项工作但不是那么好,请问任何领导?
答案 0 :(得分:0)
要获得一年的月末,请在该年的第一个月添加一个月,然后减去1天。其余的是细节。
答案 1 :(得分: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)))