Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ASP.NET的SQL计算_Asp.net_Sql_Data Retrieval - Fatal编程技术网

ASP.NET的SQL计算

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

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

我的表格中有一列包含日期(即2012年4月5日),我需要一个计算结果来提取所选会计年度的日期?因此,当我需要查看2003年2月14日的数据时,我需要2002财年


这一切都与我的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