SQL Server 将 DateTime 类型更新为 null

发布于 2024-12-21 12:05:45 字数 340 浏览 0 评论 0原文

既然今天是星期五,我的大脑肯定出了故障。

我正在尝试使用良好的 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

挽容 2024-12-28 12:05:46

问题是,除非您采取特定操作,否则 DateTime 将表示为 DateTime.MinValue。因此,如果您希望数据库中存在 null,则需要测试该值,如果是 MinValue,则发送 DBNull。

我们实际上使用一个方法来获取日期时间的值,或者如果日期是最小值则为 null:

function object DateToDB(DateTime testDate) 
{
    if (testDate == DateTime.MinValue)
    {
        return DBNull.Value;
    } else 
    {
        return testDate;
    }
}

然后使用该方法来分配参数值。

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:

function object DateToDB(DateTime testDate) 
{
    if (testDate == DateTime.MinValue)
    {
        return DBNull.Value;
    } else 
    {
        return testDate;
    }
}

This method is then used to assign the parameter value.

娇纵 2024-12-28 12:05:45

你想使用 DBNull.Value

就像之前的评论一样,你可以做类似 DateTime 的事情吗? myDate = null;

you want to use DBNull.Value

just like the prior comments you could do something like DateTime? myDate = null;

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文