如何计算月中的财务月份

时间:2013-06-17 19:04:36

标签: sql sql-server

我想要一个月的范围从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来完成这项工作但不是那么好,请问任何领导?

2 个答案:

答案 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)))