为什么将 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和实体框架
非常感谢
问题出在 C# 代码中。根据MSDN的说法:
DateTime.MaxValue
字段表示DateTime
,即公历9999年12月31日。
您的日期值刚好高于此值,因此例外。
我建议在数据库中明确保存一个非常大的日期值,例如 9999 年 12 月 31 日,以防日期值不可用。