2016-05-15 22 views
-1

現在の会計年度の最初の日付を取得しようとしています。私の場合、会計年度は10月に現在の会計年度の最初の日付

例を開始します:私は2015年10月1日

私は以下のクエリを使用し、一般的になり必要な現在の年の最初の日を取得しますが、どのように私は変化しませんそれは会計年度の最初の日付を取得する?

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

で変換機能を使用することができることを得ますか? – niksofteng

答えて

0

あなたは、次のロジック適用することができます。現在の日付から最初の減算9ヵ月の時点で

DATEADD(MONTH, 9, DATEADD(YEAR, DATEDIFF(YEAR, 0, DATEADD(MONTH, -9, GETDATE())), 0)) 
0
  1. :、現在の日付から9ヶ月を引き、今年の月1日を見つけ、再び9ヶ月を追加します前年度(あなたのFasical年)を取得します。
  2. それから、年の差を0であなたの日付にします。
  3. 今月の開始点を取得するには、年の差を0で加算します。
  4. 最後に、Fasical Yearの開始月を取得するために9ヶ月を追加する必要があります。
  5. 年の例として、必要な書式は「10/01/2015」です。だからあなたはあなたがして、クエリを必要としない理由会計年度を開始するために現在の年と月を知っている101

    select convert(varchar(12), DATEADD(MONTH, 9, DATEADD(YEAR, DATEDIFF(YEAR, 0, DATEADD(MONTH, -9, GETDATE())), 0)), 101) as StartYear 
    
+0

提案された回答を編集して、これが何をするのか、それがOPをどのように扱うのかを説明できますか? –

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 
*/ 
関連する問題