如何修复正在使用的 SQL Server 版本不支持数据类型“datetime2”

本文关键字:不支持 版本 数据类型 datetime2 Server SQL 何修复 | 更新日期: 2023-09-27 17:56:53

我试图在两个日期之间的数据库中搜索,但出现错误:

正在使用的 SQL Server 版本不支持数据类型"datetime2"

这是我的代码

if (idbox.Text != "")
{
    conn.Open();
    SqlDataAdapter dataadabter = new SqlDataAdapter("select name, mil_no,Hodor_date,rotba,enseraf_date,user_hodor,user_enseraf,hodor_time,enseraf_time " +
    "from Hodor_Data where CONVERT(DATETIME,Hodor_date,101)" + "between @p1 AND @p2" + " and mil_no='" + idbox.Text + "'", conn);
    SqlParameter fromdate = new SqlParameter("@p1", SqlDbType.DateTime2);
    fromdate.Value = dateTimePicker1.Value;
    SqlParameter todate = new SqlParameter("@p2", SqlDbType.DateTime2);
    todate.Value = dateTimePicker2.Value;
    dataadabter.SelectCommand.Parameters.Add(fromdate);
    dataadabter.SelectCommand.Parameters.Add(todate);
    DataTable dt = new DataTable();
    dataadabter.Fill(dt);
    dataGridView1.DataSource = dt;
    conn.Close();

hodor_date nvarchar(50)

如何修复正在使用的 SQL Server 版本不支持数据类型“datetime2”

您使用的是旧版本的 sql,请改用SqlDbType.DateTime,因为 sql 服务器版本不支持 DateTime2。

...
SqlParameter fromdate = new SqlParameter("@p1", SqlDbType.DateTime);
fromdate.Value = dateTimePicker1.Value;
SqlParameter todate = new SqlParameter("@p2", SqlDbType.DateTime);
...

代码中还有其他我有问题的地方(非参数化成员,不使用使用块,nvarchar表示日期等)。