C# 无法从字符串转换日期
我正在从sql server获取季度记录。这些记录就像一年中每个季度的总借项和贷项。在我的sql查询中,我已经完成了季度,正如您在代码中看到的,年份是动态的C# 无法从字符串转换日期,c#,sql,C#,Sql,我正在从sql server获取季度记录。这些记录就像一年中每个季度的总借项和贷项。在我的sql查询中,我已经完成了季度,正如您在代码中看到的,年份是动态的 public List<QuarterlyExpenseList> GetExpenseDataQuarterly(string Id, string Year) { string SQL = "select aspnetusers.username, SUM(case when Expe
public List<QuarterlyExpenseList> GetExpenseDataQuarterly(string Id, string Year)
{
string SQL = "select aspnetusers.username, SUM(case when Expense.Type='credit' and (Expense.Date>='@year-01-01' and Expense.Date<='@year-03-31') then Expense.Amount else 0 end) as QuarterOneCredits,";
SQL += " SUM(case when Expense.Type='credit' and (Expense.Date>='@year-04-01' and Expense.Date<='@year-06-30') then Expense.Amount else 0 end) as QuarterTwoCredits,";
SQL += " SUM(case when Expense.Type='credit' and (Expense.Date>='@year-07-01' and Expense.Date<='@year-09-30') then Expense.Amount else 0 end) as QuarterThreeCredits,";
SQL += " SUM(case when Expense.Type='credit' and (Expense.Date>='@year-10-01' and Expense.Date<='@year-12-31') then Expense.Amount else 0 end) as QuarterFourCredits,";
SQL += " SUM(case when Expense.Type='debit' and (Expense.Date>='@year-01-01' and Expense.Date<='@year-03-31') then Expense.Amount else 0 end) as QuarterOneDebits,";
SQL += " SUM(case when Expense.Type='debit' and (Expense.Date>='@year-04-01' and Expense.Date<='@year-06-30') then Expense.Amount else 0 end) as QuarterTwoDebits,";
SQL += " SUM(case when Expense.Type='debit' and (Expense.Date>='@year-07-01' and Expense.Date<='@year-09-30') then Expense.Amount else 0 end) as QuarterThreeDebits,";
SQL += " SUM(case when Expense.Type='debit' and (Expense.Date>='@year-10-01' and Expense.Date<='@year-12-31') then Expense.Amount else 0 end) as QuarterFourDebits";
SQL += " from Expense inner join AspNetUsers on AspNetUsers.Id=Expense.MadeBy";
if (Id == null)
{
SQL += " group by aspnetusers.username";
}
else
{
SQL += " where Expense.MadeBy=@id group by AspNetUsers.UserName group by aspnetusers.username";
}
using (IDbConnection cn=Connection)
{
cn.Open();
List<QuarterlyExpenseList> objList = cn.Query<QuarterlyExpenseList>(SQL, new { year = Year, id = Id }).ToList();
return objList;
}
}
公共列表GetExpenseDataQuarterly(字符串Id,字符串年份)
{
string SQL=“选择aspnetusers.username,SUM(费用时为大小写)。Type='credit'和(Expense.Date>='@year-01-01'和Expense.Date='@year-04-01'和Expense.Date='@year-07-01'和Expense.Date='@year-01-01'和Expense.Date='@year-04-01'和Expense.Date='@year-10-01'和Expense.Date='@year-10-01'和Expense.DateI删除了动态年份“@year“外部字符串,因为它是动态值。当像'@year-04-01'那样编写时,SQL将'@year'视为字符串,而不是动态值。”
使用以下代码:
public List<QuarterlyExpenseList> GetExpenseDataQuarterly(string Id, string Year)
{
string SQL = "select aspnetusers.username, SUM(case when Expense.Type='credit' and (Expense.Date>=@year+'-01-01' and Expense.Date<=@year+'-03-31') then Expense.Amount else 0 end) as QuarterOneCredits,";
SQL += " SUM(case when Expense.Type='credit' and (Expense.Date>=@year+'-04-01' and Expense.Date<=@year+'-06-30') then Expense.Amount else 0 end) as QuarterTwoCredits,";
SQL += " SUM(case when Expense.Type='credit' and (Expense.Date>=@year+'-07-01' and Expense.Date<=@year+'-09-30') then Expense.Amount else 0 end) as QuarterThreeCredits,";
SQL += " SUM(case when Expense.Type='credit' and (Expense.Date>=@year+'-10-01' and Expense.Date<=@year+'-12-31') then Expense.Amount else 0 end) as QuarterFourCredits,";
SQL += " SUM(case when Expense.Type='debit' and (Expense.Date>=@year+'-01-01' and Expense.Date<=@year+'-03-31') then Expense.Amount else 0 end) as QuarterOneDebits,";
SQL += " SUM(case when Expense.Type='debit' and (Expense.Date>=@year+'-04-01' and Expense.Date<=@year+'-06-30') then Expense.Amount else 0 end) as QuarterTwoDebits,";
SQL += " SUM(case when Expense.Type='debit' and (Expense.Date>=@year+'-07-01' and Expense.Date<=@year+'-09-30') then Expense.Amount else 0 end) as QuarterThreeDebits,";
SQL += " SUM(case when Expense.Type='debit' and (Expense.Date>=@year+'-10-01' and Expense.Date<=@year+'-12-31') then Expense.Amount else 0 end) as QuarterFourDebits";
SQL += " from Expense inner join AspNetUsers on AspNetUsers.Id=Expense.MadeBy";
if (Id == null)
{
SQL += " group by aspnetusers.username";
}
else
{
SQL += " where Expense.MadeBy=@id group by AspNetUsers.UserName group by aspnetusers.username";
}
using (IDbConnection cn=Connection)
{
cn.Open();
List<QuarterlyExpenseList> objList = cn.Query<QuarterlyExpenseList>(SQL, new { year = Year, id = Id }).ToList();
return objList;
}
}
公共列表GetExpenseDataQuarterly(字符串Id,字符串年份)
{
string SQL=“选择aspnetusers.username,SUM(费用时为大小写)。Type='credit'和(Expense.Date>=@year+'-01-01'和Expense.Date=@year+'-04-01'和Expense.Date=@year+'-07-01'和Expense.Date=@year+'-10-01'和Expense.Date=@year+'-04-01'和Expense.Date=@year+'-07-01'和Expense.Date=@year+'-10-01'和Expense.Date为什么不在创建SQL查询时添加变量?比如SQL>+=“金额(费用类型=”贷方“和(费用日期>=”“+年份+”-04-01”和费用时的情况)。Date@CodeCaster我删除了字符串外的动态年份“@year”,因为它是一个动态值。当以“@year-04-01”的形式编写时,SQL将“@year”视为字符串,而不是动态值。