[英]Override DateTime.MinValue
我正在使用返回1.1.0001的Datetime.Minvalue
。 此值無法存儲到DB,因為年份小於1975年。
是否可以將DateTime.Minvalue
覆蓋為1.1.1901?
問候
不,這不對。 您可以使用SqlDateTime.MinValue (1753-01-01),為1901-01-01定義自己的常量,如果這是你想要使用的,或實際使用可以為空的DateTime:
DateTime? dateVal = null;
在沒有指定日期的情況下,null可能更有意義並且將DBNull.Value持久化到數據庫而不是像您當前正在執行的“特殊”值。
或者,作為最終選項....在您繼續訪問數據庫時,請檢查DateTime.MinValue並切換替代方案。 但我推薦可以為空的DateTime。
有可能的。 每個發現此代碼的人都會討厭你。 有些人可能會傷害你。
typeof(DateTime)
.GetField ("MinValue")
.SetValue (typeof(DateTime), new DateTime(1901, 1, 1));
怎么用這個方法
DateTime GetMinDateTime()
{
return DateTime.MinValue.AddYears(900);
}
你應該使用可空的DateTime來做這樣的事情。
不,這是一個靜態字段,那些不能被覆蓋。
您需要編寫一個Guard或某種轉換
不可以。由於DateTime.MinValue是靜態的,因此沒有簡單的覆蓋方法。 我建議用常量替換DateTime.MinValue,或者在數據訪問代碼中,將DateTime.MinValue的DateTime值轉換為1900-01-01。
如果您只編寫Microsoft SQL Server,則可以將System.DateTime替換為System.Data.SqlTypes.SqlDateTime。 如果我已正確理解,System.Data.SqlTypes數據類型與數據庫數據類型直接兼容,這可以避免遇到的情況。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.