我在我的 PostgresSQL 表中插入一条记录,传递 DBNull.Value 作为时间戳,没有时区字段,使用 NpgsqlParameter,如下所示:
ncmd.Parameters.Add(new NpgsqlParameter(":EndDate", NpgsqlDbType.Timestamp));
DateTime? dtval = sr.GetDateTime("EndDate");
ncmd.Parameters["EndDate"].IsNullable = true;
if (dtval.HasValue)
ncmd.Parameters["EndDate"].Value = dtval;
else
ncmd.Parameters["EndDate"].Value = DBNull.Value;
当我尝试只选择字段的空值记录时,我使用“Select * From "EVAL"Where "EndDate"IS NULL"但没有返回任何内容。当我在 pgAdmin 中读取表数据时,我在字段中看到值“-infinity”。 拜托,有人可以告诉我如何为 NpgsqlParameter 传递空值吗?
提前致谢
达尼洛达席尔瓦
最佳答案
抱歉,我发现了我的错误。当我从数据读取器读取要插入的数据时,当 DateTime 字段为 null 时,我得到了一个默认值,因此我插入的是 default(DateTime) 而不是 DBNull.Value。现在我正在测试 dtval.HasValue && dtval != default(DateTime) 并且一切正常。谢谢。
关于postgresql - -为 NpgsqlParameter Timestamp 字段添加到数据库中的 Infinity;期待 NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31170057/