我正在使用返回1.1.0001的Datetime.Minvalue
。此值无法存储到DB,因为年份小于1975年。
是否可以将DateTime.Minvalue
覆盖为1.1.1901?
此致
答案 0 :(得分:7)
不,不是。您可以使用SqlDateTime.MinValue(1753-01-01),为1901-01-01定义自己的常量,如果这是你想要使用的,或者实际使用可以为空的DateTime:
DateTime? dateVal = null;
在没有指定日期的情况下,null可能更有意义并且将DBNull.Value持久保存到数据库而不是像您当前正在执行的“特殊”值。
或者,作为最终选项......在您继续访问数据库时,请检查DateTime.MinValue并切换替代方案。但我推荐可以为空的DateTime。
答案 1 :(得分:4)
有可能。每个发现此代码的人都会讨厌你。有些人可能会伤害你。
typeof(DateTime)
.GetField ("MinValue")
.SetValue (typeof(DateTime), new DateTime(1901, 1, 1));
答案 2 :(得分:1)
如何使用此方法
DateTime GetMinDateTime()
{
return DateTime.MinValue.AddYears(900);
}
答案 3 :(得分:0)
你应该使用可以为空的DateTime。
答案 4 :(得分:0)
不,这是一个静态字段,无法覆盖。
您需要编写Guard或某种转换
答案 5 :(得分:0)
没有。由于DateTime.MinValue是静态的,因此没有简单的覆盖方法。我建议用常量替换DateTime.MinValue,或者在数据访问代码中,将DateTime.MinValue的DateTime值转换为1900-01-01。
答案 6 :(得分:0)
如果您只编写Microsoft SQL Server,则可以将System.DateTime替换为System.Data.SqlTypes.SqlDateTime。如果我已正确理解,System.Data.SqlTypes数据类型与数据库数据类型直接兼容,这可以避免遇到的情况。