0

私の SQL データベースには、会計年度の値を含む列があります。会計年度は、10 月 1 日から翌年 9 月 30 日までです。たとえば、現在の会計年度は 2011-2012 または "2011" です。データベースから日付を取得するための計算が必要です。

テーブルに日付 (2012 年 5 月 4 日など) を含む列があります。選択した会計年度の日付を取得する計算が必要ですか? したがって、2003 年 2 月 14 日の日付のデータを表示する必要がある場合は、2002 年の会計年度が必要になります。

これはすべて ASP.NET ページに関連付けられており、ユーザーが表示する会計年度を選択すると、要求された情報がグリッドビューに表示されます。したがって、会計年度 2010 を選択すると、グリッドビューに取り込まれるデータは、2010 年 10 月 1 日から 2011 年 9 月 30 日までのすべてのレコードになります。助けてくれてありがとう、どこから始めればいいのかわからないので、まだ何も試していません(SQL初心者)。

4

3 に答える 3

3

会計年度は、3 か月足すとわかります。

year(dateadd(month,3,'2011-09-30'))

したがって、会計年度 2011 のすべてのエントリを選択するには、次のようにします。

select  *
from    YourTable as yt
where   year(dateadd(month,3,yt.TransactionDt)) = 2011
于 2012-06-13T12:13:45.960 に答える
1

SqlParameters を使用して SQL Server にデータを送信していると思います。それで:

int fiscal_year = 2002;

SqlParameter fyStart = new SqlParameter("@FiscalYearStart", 
    SqlDbType.DateTime);
fyStart.Value = new SqlDateTime(fiscalYear, 10, 01);

SqlParameter fyEnd = new SqlParameter("@FiscalYearEnd", 
    SqlDbType.DateTime);
fyEnd.Value = new SqlDateTime(fiscalYear+1, 10, 01);

次に、これら 2 つのパラメーターをたとえばストアド プロシージャに渡し、次のようにテーブルをクエリできます。

WHERE date BETWEEN @FiscalYearStart AND @FiscalYearEnd

NB FiscalYearEnd は、YYYY-10-01T00:00:00 として表されるか、9 月 30 日全体が含まれるため、10-Oct-YEAR+1 である必要があります。

于 2012-06-13T12:17:26.667 に答える
1

あなたはそれを照会することができます:

SELECT *
FROM YourTable
WHERE YourTableDate >= CAST(@FiscalYear AS CHAR(4)) + '-10-01'
AND   YourTableDate <  CAST(@FiscalYear + 1 AS CHAR(4)) + '-10-01';

または、柔軟性が必要な場合は、代わりに、会計年度に結合する日付範囲のテーブルを用意することもできます。これにより、たとえば複数のテナントや企業に対して複数の会計年度定義を設定したり、クエリを変更せずに定義を変更したりできます。その後、必要に応じてこのテーブルに参加して、結果をフィルタリングできます。

CompanyID FiscalYear StartDate  EndDate
1         2010       2010-10-01 2011-09-30
1         2011       2011-10-01 2012-09-30
2         2010       2010-01-01 2011-12-31
2         2011       2011-01-01 2012-12-31


SELECT *
FROM YourTable t
INNER JOIN FiscalYear y
    ON y.FiscalYear = t.FiscalYear
WHERE t.YourTableDate >= y.StartDate AND t.YourTableDate < DATEADD(d, 1, y.EndDate);
于 2012-06-13T12:18:06.577 に答える