SQL Calculation for ASP.NET



在我的SQL数据库中,我有一列包含会计年度值。财政年度从10月1日开始到次年9月30日。例如,当前财政年度是 2011-2012 或"2011"。我需要一个计算来从我的数据库中提取日期。

我的表中有一列包含日期(即 05/04/2012),我需要计算来提取所选会计年度的日期?因此,当我需要查看日期 02/14/2003 的数据时,我需要 2002 财年。

这一切都与我的 ASP.NET 页面有关,用户在其中选择他们要查看的财政年度,并显示包含所需信息的网格视图。因此,如果我选择 2010 财年,则拉入网格视图的数据应该是 2010 年 10 月 1 日到 2011 年 9 月 30 日的所有记录。感谢您的帮助,我还没有尝试任何东西,因为我不确定从哪里开始(sql 新手)。

您可以通过添加三个月来查找会计年度:

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

因此,要选择 2011 财年的所有条目,请尝试:

select  *
from    YourTable as yt
where   year(dateadd(month,3,yt.TransactionDt)) = 2011

我假设你正在使用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);

然后,例如,可以将这两个参数传递给存储过程,并使用以下命令查询表

WHERE date BETWEEN @FiscalYearStart AND @FiscalYearEnd

注意:财政年度结束应为 10-Oct-YEAR+1,因为它将表示为 YYYY-10-01T00:00:00,或将包括整个 9 月 30 日。

你可以查询它:

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);

最新更新