Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.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
C# 无法从字符串转换日期_C#_Sql - Fatal编程技术网

C# 无法从字符串转换日期

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

我正在从sql server获取季度记录。这些记录就像一年中每个季度的总借项和贷项。在我的sql查询中,我已经完成了季度,正如您在代码中看到的,年份是动态的

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”视为字符串,而不是动态值。