SQL Server默認日期格式/語言與呈現爲asp.net應用程序中的字符串的DateTime對象之間是否有任何關係?SQL Server的默認dateformat /語言會影響我的DateTime對象toString呈現嗎?
默認的SqlServer日期格式是否會影響我生成的報告中的DateTime字符串? asp.net應用程序使用EntityFramework來獲取數據。
SQL Server默認日期格式/語言與呈現爲asp.net應用程序中的字符串的DateTime對象之間是否有任何關係?SQL Server的默認dateformat /語言會影響我的DateTime對象toString呈現嗎?
默認的SqlServer日期格式是否會影響我生成的報告中的DateTime字符串? asp.net應用程序使用EntityFramework來獲取數據。
引用MSDN:
日期時間toString方法將電流的DateTime 對象與其等效的字符串表示使用指定 格式和當前區域性的格式約定的值。
這意味着,不,它不會。渲染將受到應用程序文化設置的影響 - 因此,無論您如何處理它,它都會相應地顯示日期時間。
電流培養(如在MSDN再次)
文化是正在執行的線程的屬性。此只讀 屬性等同於檢索Thread.CurrentCulture屬性返回的CultureInfo對象 。當一個線程啓動時,它的 文化最初通過調用Windows的 GetUserDefaultLocaleName函數來確定。
在ASP.NET最有可能的情況下,這將是從用戶的操作系統文化設置派生(我在這裏採取了很長的捷徑)的設置。然而,這可能是在web.config中overridden(或其他地方):
<globalization uiCulture="en" culture="en-US" />
SQL Server存儲datetime
類型爲二進制。它使用8個字節。前4個字節是日期,後4個字節是時間。
此類型是mapped與CLR側System.DateTime這System.DateTime
確實不有任一格式。它只有日期和時間值。它基於Ticks
,這是從公曆0001年1月1日午夜12:00:00開始經過的100納秒間隔的數量。
正如你所看到的,兩者實際上都是一種數值。
在另一方面,當你得到它通常在C#側DateTime.ToString
方法和SQL Server端Format
方法來完成他們的文本(又名字符串)表示「格式」概念只適用。
所以,如果你選擇正確的數據類型(參見:Bad habits to kick : choosing the wrong data type)爲您System.DateTime
值在你的SQL服務器(通常與datetime
或datetime2
完成),不,你的SQL Server默認的日期格式/語言不影響格式爲您的報告生成。
當您直接與DateTime
值養活你的報道,ToString()
方法會自動調用(如果沒有自定義格式等。)這種方法使用標準The "G"
Format Specifier你CurrentCulture
設置。
對於初學者來說,確實是對於理解DateTime實例和它們的字符串表示(格式)之間的區別很重要。
日期沒有格式。他們可能有時區,但格式僅用於UI目的。 – DavidG
我認爲日期會很好地從數據庫解釋到asp.net應用程序。但是,將DateTime對象轉換爲字符串時(除非您明確設置格式),計算機的「區域」設置確實會產生影響。 – hsoesanto