【问题标题】:Error filter the table based on a date field根据日期字段过滤表时出错
【发布时间】:2015-10-31 15:40:21
【问题描述】:

我使用此代码按日期字段过滤表(在表中) 这是我的代码:

public double Mounthcost()
    {
        DateTime today = DateTime.Now;
        PersianCalendar persianCalendar = new PersianCalendar();
        int yearPersian = persianCalendar.GetYear(today);
        int monthPersian = persianCalendar.GetMonth(today);
        DateTime firstDayOfMonth = persianCalendar.ToDateTime(yearPersian, monthPersian, 1, 0, 0, 0, 0);
        int daysInMonth = persianCalendar.GetDaysInMonth(yearPersian, monthPersian);
        DateTime lastDayOfMonth = firstDayOfMonth.AddDays(daysInMonth - 1);
        //try
        //{
            SqlDataReader DR = ExecuteReader(System.Data.CommandType.Text, "Select Sum(Price) From Tbl_Cost Where Dat Between" + firstDayOfMonth + "AND" + lastDayOfMonth);
            if (DR.Read())
            {
                Mouth_Cost = Double.Parse(DR[0].ToString());
            }
            return Mouth_Cost;
        //}
        //catch
        //{
        //    return 0;
        //}
    }

这个错误:

在预期条件的上下文中指定的非布尔类型的表达式,在 'between10' 附近。

【问题讨论】:

  • 在构建查询时尝试在日期中添加单引号:between '" + firstDayOfMonth + "' and '" + 。您确实应该使用参数化查询,或者至少将日期/时间显式转换为字符串。请注意,使用参数消除了数据库以与 .NET 不同的方式解释字符串日期的问题,即“10/5/15”十月还是五月?然后就是将 sum 从数字数据类型转换为字符串,然后解析为 double 的奥秘。

标签: c# tsql filter sqldatareader


【解决方案1】:

您的 SQL 查询中缺少空格

SqlDataReader DR = ExecuteReader(System.Data.CommandType.Text, "Select Sum(Price) From Tbl_Cost Where Dat Between " + firstDayOfMonth + " AND " + lastDayOfMonth);

注意 BETWEEN 和 AND 之后的空格。

【讨论】:

  • @ghasemdeh 错误是一样的吗?如果没有,您能否发布新的错误消息。
【解决方案2】:

谢谢哈宝 :) 使用这个:

SqlDataReader DR = ExecuteReader(System.Data.CommandType.Text, "Select Sum(Price) From Tbl_Cost Where Dat Between @F AND @L", new SqlParameter[]
            {
                new SqlParameter("@F", firstDayOfMonth),
                new SqlParameter("@L", lastDayOfMonth),
            }

做对了……

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-26
    • 2017-01-15
    • 1970-01-01
    • 2018-01-07
    • 2020-11-27
    • 2018-05-17
    • 2021-02-05
    相关资源
    最近更新 更多