如何插入 DateTime2

How to insert DateTime2

使用 SqlCommand 将值插入 DATETIME2(7) 类型的列到 SQL 服务器的正确方法是什么?

这是我尝试过的:

DateTime d = new DateTime(2000, 1, 1, 0, 0, 0).AddTicks(1111111);

using (SqlCommand cmd = conn.CreateCommand()) {
    cmd.CommandText = "INSERT DtTest VALUES(@d)";
    cmd.Parameters.AddWithValue("@d", d);
    cmd.ExecuteNonQuery();
}

但是当我检查数据库的值时,我得到:

2000-01-01 00:00:00.1100000

四舍五入到 DATETIME 精度的值。

我需要做什么才能获得包括最后五位数字在内的精确值?

您可以像这样指定列类型:

var sql_parameter = new SqlParameter("@d", SqlDbType.DateTime2);
sql_parameter.Value = d;
cmd.Parameters.Add(sql_parameter);

或更简洁:

cmd.Parameters.Add( "@d", SqlDbType.DateTime2 ).Value = d;