为什么将 nulalable DateTime 设置为 DateTime.Max 会导致 pgsql 解析错误

本文关键字:DateTime pgsql 错误 Max nulalable 设置 为什么 | 更新日期: 2023-09-27 18:35:34

当我将可为空的日期时间设置为 DateTime.Max 并将其保存到 postgres 类型的数据库字段时

没有时区的时间戳

它将其保存为

10000-01-01 00:00:00

然后,当我重新加载仅从此表中读取的页面时,出现以下错误:

System.InvalidCastException:指定的强制转换无效。

a) 日期时间是吗?正确的 C# 转换类型?b) 设置日期时间值的最佳方法是什么?

我 http://www.postgresql.org/docs/9.2/static/datatype-datetime.html 检查了这里的文档,它指定最大值为 294276 AD......但这低于当前设置的值,因此不可能破坏它。我正在使用最新版本的NpgSQL和实体框架

非常感谢

为什么将 nulalable DateTime 设置为 DateTime.Max 会导致 pgsql 解析错误

问题出在 C# 代码中。根据MSDN的说法:

DateTime.MaxValue字段表示 DateTime,即公历9999年12月31日

您的日期值刚好高于此值,因此例外。

我建议在数据库中明确保存一个非常大的日期值,例如 9999 年 12 月 31 日,以防日期值不可用。