SQL Server 将 DateTime 类型更新为 null
既然今天是星期五,我的大脑肯定出了故障。
我正在尝试使用良好的 OleDb 更新 DateTime 类型的列,更新始终运行(更改同一行上的其他列值),但由于某种原因,DateTime 列拒绝更新设置为空。
Ofc 该列允许为空。
我正在使用 OleDbParameter 构造函数向我的命令添加一个新参数,如果该参数值为空,该参数是否会拒绝运行?
我尝试过 SqlDateTime.Null、DbNull.Value 和 null 作为参数,但没有将值设置为 null,它保持不变或将其设置为我们心爱的 1900-00-01。
任何提示和技巧表示赞赏
Since it's friday my brain must have malfunctioned.
I'm trying to update a column of the type DateTime with the good ol' OleDb, the update always run (changing other column values on the same row) but for some reason the DateTime column refuses to be set to null.
Ofc the column allows null.
I'm using the OleDbParameter constructor to add a new parameter to my command might it be the parameter that refuses to run if the value is null?
I've tried SqlDateTime.Null, DbNull.Value and null as the parameter but nothing sets the value to null, it leaves it untouched or sets it to our beloved 1900-00-01.
any tips and tricks are appreciated
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
问题是,除非您采取特定操作,否则 DateTime 将表示为 DateTime.MinValue。因此,如果您希望数据库中存在 null,则需要测试该值,如果是 MinValue,则发送 DBNull。
我们实际上使用一个方法来获取日期时间的值,或者如果日期是最小值则为 null:
然后使用该方法来分配参数值。
The issue is that unless you take specific action, a DateTime is going to be represented as DateTime.MinValue. So if you want a null in the DB, you will need to test the value and, if MinValue, send DBNull instead.
We actually use a method to get the value as date time or null if date is minvalue:
This method is then used to assign the parameter value.
你想使用 DBNull.Value
就像之前的评论一样,你可以做类似
DateTime 的事情吗? myDate = null;
you want to use DBNull.Value
just like the prior comments you could do something like
DateTime? myDate = null;