当前财年的第一个日期

时间:2016-05-15 09:24:15

标签: sql sql-server sql-server-2008

我想获得当前财年的第一个日期。就我而言,财政年度从10月开始。

示例:我需要2015年10月1日

我通常会使用以下查询来获取当年的第一天,但​​如何更改它以获得会计年度的第一个日期?

select 
    convert(varchar(12), (
      DateAdd(month, (
        Month(getdate()) - 1) * -1, 
        DateAdd(Day, (
          Day(getdate()) - 1) * -1, 
          getdate()))),
    103) as StartYear

3 个答案:

答案 0 :(得分:0)

您可以应用以下逻辑:从当前日期减去9个月,找到今年1月1日并再次增加9个月:

DATEADD(MONTH, 9, DATEADD(YEAR, DATEDIFF(YEAR, 0, DATEADD(MONTH, -9, GETDATE())), 0))

答案 1 :(得分:0)

  1. 首先从当前日期减去9个月以获得上一年(您的法定年份)。
  2. 然后将年份与0取为您的约会。
  3. 现在将年份差异添加为0以获得一个月的开始。
  4. 最后,您需要添加9个月才能获得法定年份的开始月份。
  5. 作为年份的例子,要求格式为“10/01/2015”。所以你可以使用转换函数101。

    mul = list(range(1, int(i)))
    
    for eve in mul:
        i = i * eve
    
    return i
    

答案 2 :(得分:0)

declare @fiscal     date    = '2015-10-01'

; with dates
as
(
    select  date = '2015-09-30' union all
    select  date = '2015-10-01' union all
    select  date = '2016-09-30' union all
    select  date = '2016-10-01'
)
select  *,
    fiscal  = case  when date < dateadd(year, year(date) - year(@fiscal), @fiscal)
            then dateadd(year, year(date) - year(@fiscal) - 1, @fiscal)
            else dateadd(year, year(date) - year(@fiscal), @fiscal)
            end
from    dates

/* result
date       fiscal
---------- ----------
2015-09-30 2014-10-01
2015-10-01 2015-10-01
2016-09-30 2015-10-01
2016-10-01 2016-10-01
*/