Sql-Server

日期時間每小時精度

  • February 11, 2019

在 SQL 中儲存日期 + 小時 + 時區的最佳方法是什麼?我不需要更高的精度(分鐘、秒、毫秒),主要原因是減少大數據集的記憶體使用和計算時間。或者這根本不應該是一個問題?

在 SQL Server 中,始終使用 datetime、datetimeoffset 或 datetime2 數據類型儲存日期。將它們作為其他任何東西儲存總是會導致不必要的 CPU 花費將列轉換為某種日期。

如果您只想儲存年份,則可能的例外情況可能是一個很小的整數。但是,由於您需要小時和時區精度,請使用datetimeoffset 數據類型。datetimeoffset(0) 將為您提供精確到秒的精度,這是您不需要的,但是您可以保證永遠不會儲存無效的日期,並且您會知道數據與時區兼容。

datetimeoffset(0) 佔用 8 個字節,除非您在記憶體中儲存大量日期,否則鑑於使用正確數據類型所帶來的優勢,這不應被視為浪費。

您可能有興趣閱讀此答案,其中討論了一些錯誤儲存日期/時間數據的常見問題。

引用自:https://dba.stackexchange.com/questions/229085