【问题标题】:Out of Range Error while accessing date from SQL Server从 SQL Server 访问日期时出现超出范围错误
【发布时间】:2019-01-30 04:06:31
【问题描述】:

我想从表中获取日期的最大值。但我总是收到“OutofRangeException”错误。我多次更改查询。

  • Due_Date 列具有 date 数据类型
  • Due_Date_Sample 是一个字符串变量
  • Due_Date_var 是一个 DateTime 变量

我的代码:

using (SqlConnection sqlCon = new SqlConnection(Main.connectionString))
{
    string commandString = "SELECT TOP 1 FORMAT(Due_Date,'dd-MM-yyyy') FROM Transactions WHERE Plot_Code='" + Plot_Code_var + "' ORDER BY Due_Date DESC;";

    SqlCommand sqlCmd = new SqlCommand(commandString, sqlCon);

    sqlCon.Open();

    SqlDataReader dr = sqlCmd.ExecuteReader();

    while (dr.Read())
    {
        date_control_var = 2;
        Due_Date_Sample = (dr["Due_Date"].ToString());
        Due_Date_var = DateTime.Parse(Due_Date_Sample.ToString());
    }

    dr.Close();
}

【问题讨论】:

  • 抛出异常的代码行是什么?
  • 检查是否为空。数据库将 DateTime 的 null 除外,但 c# 没有。
  • Due_Date_Sample = dr["Due_Date"].ToString();
  • 我正在另一个 try catch 中检查 null ......当值不为 null 时,这段代码运行
  • 请考虑在 SQL 中使用参数而不是字符串连接。

标签: c# sql .net sql-server tsql


【解决方案1】:

您需要为所选值指定别名,例如:FORMAT(Due_Date,'dd-MM-yyyy') as Due_Date

【讨论】:

    【解决方案2】:

    你可以这样做:

    using (SqlConnection sqlCon = new SqlConnection(Main.connectionString))
                        {
                            string commandString = "SELECT TOP 1 FORMAT(Due_Date,'dd-MM-yyyy') as Due_Date FROM Transactions where Plot_Code='" + Plot_Code_var + "' ORDER BY Due_Date DESC;";
    
                            SqlCommand sqlCmd = new SqlCommand(commandString, sqlCon);
                            sqlCon.Open();
                            SqlDataReader dr = sqlCmd.ExecuteReader();
                            while (dr.Read())
                            {
                                date_control_var = 2;
                                Due_Date_Sample = (dr["Due_Date"].ToString());
                                Due_Date_var = DateTime.Parse(Due_Date_Sample.ToString());
    
                            }
                            dr.Close();
                        }
    

    【讨论】:

      猜你喜欢
      • 2019-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多