挑戰:
處理大型 SQL Server 資料集通常需要有效地從日期時間欄位中刪除時間部分。 常使用兩種常見技術:
DATEADD(dd, DATEDIFF(dd, 0, getdate()), 0)
CAST(CONVERT(CHAR(11), getdate(), 113) AS DATETIME)
最佳方法:
效能基準總是顯示DATEADD(dd, DATEDIFF(dd, 0, getdate()), 0)
是最有效的方法。 這種方法:
現代 SQL Server 版本(2008 及更高版本)提供了更好的替代方案:
CAST(getdate() AS DATE)
直接將日期時間轉換為日期資料類型,無需刪除時間組件。 datetime2
字段,DATEADD
方法仍然適用,但需要調整紀元值:<code class="language-sql">DECLARE @datetime2value datetime2 = '02180912 11:45'; -- Year 0218 within datetime2 DECLARE @datetime2epoch datetime2 = '19000101'; SELECT DATEADD(dd, DATEDIFF(dd, @datetime2epoch, @datetime2value), @datetime2epoch);</code>
主要考慮因素:
WHERE
子句中使用這些函數會對索引利用率產生負面影響。 需要仔細考慮。 CAST(CHAR())
方法對字元轉換的依賴引入了與語言設定和日期格式相關的潛在漏洞。 FLOAT
來儲存日期,這對於大型資料集可能不是最佳選擇。 以上是如何有效地從 SQL Server 中的日期時間欄位中刪除時間部分?的詳細內容。更多資訊請關注PHP中文網其他相關文章!