ASP.NET的SQL计算
在我的SQL数据库中,有一列包含会计年度值。会计年度从10月1日开始至次年9月30日。例如,当前财政年度为2011-2012或“2011”。我需要计算从数据库中提取日期 我的表格中有一列包含日期(即2012年4月5日),我需要一个计算结果来提取所选会计年度的日期?因此,当我需要查看2003年2月14日的数据时,我需要2002财年ASP.NET的SQL计算,asp.net,sql,data-retrieval,Asp.net,Sql,Data Retrieval,在我的SQL数据库中,有一列包含会计年度值。会计年度从10月1日开始至次年9月30日。例如,当前财政年度为2011-2012或“2011”。我需要计算从数据库中提取日期 我的表格中有一列包含日期(即2012年4月5日),我需要一个计算结果来提取所选会计年度的日期?因此,当我需要查看2003年2月14日的数据时,我需要2002财年 这一切都与我的ASP.NET页面相关联,在该页面中,用户选择要查看的会计年度,并显示一个包含所需信息的gridview。因此,如果我选择2010财年,拉入gridvie
这一切都与我的ASP.NET页面相关联,在该页面中,用户选择要查看的会计年度,并显示一个包含所需信息的gridview。因此,如果我选择2010财年,拉入gridview的数据应该是从2010年1月10日到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
您可以通过添加三个月来查找会计年度:
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月10日+1,因为它将表示为YYYY-10-01T00:00:00,或者包括整个9月30日。我假设您正在使用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月10日+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';
选择*
从你的桌子上
其中YourTableDate>=CAST(@FiscalYear AS CHAR(4))+'-10-01'
和YourTableDate
或者,如果您需要灵活性,您也可以创建一个日期范围表,该表与会计年度关联。这使您能够为多个租户或公司创建多个会计年度定义,或者允许在不更改查询的情况下更改定义。然后,您可以根据需要加入此表以筛选结果
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);
CompanyID财政年度开始日期结束日期
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
挑选*
从你的桌子上
内连接财政部
在y.FiscalYear=t.FiscalYear上
其中t.YourTableDate>=y.StartDate和t.YourTableDate
您可以查询:
SELECT *
FROM YourTable
WHERE YourTableDate >= CAST(@FiscalYear AS CHAR(4)) + '-10-01'
AND YourTableDate < CAST(@FiscalYear + 1 AS CHAR(4)) + '-10-01';
选择*
从你的桌子上
其中YourTableDate>=CAST(@FiscalYear AS CHAR(4))+'-10-01'
和YourTableDate
或者,如果您需要灵活性,您也可以创建一个日期范围表,该表与会计年度关联。这使您能够为多个租户或公司创建多个会计年度定义,或者允许在不更改查询的情况下更改定义。然后,您可以根据需要加入此表以筛选结果
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);
CompanyID财政年度开始日期结束日期
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
挑选*
从你的桌子上
内连接财政部
在y.FiscalYear=t.FiscalYear上
其中t.YourTableDate>=y.StartDate和t.YourTableDate