T-SQL 日期時間值建構:從日、月、年值正確建立日期時間
在 SQL Server 中,將分散的日期元件轉換為單一日期時間值是常見的任務。本指南探討了從日、月、年值創建日期時間的正確方法,以確保日期表示的準確性。
問題所在
使用 DATEPART 函數組合單一日期元件通常會產生不正確的結果。問題中提供的表達式 CAST(DATEPART(year, DATE) '-' DATEPART(month, DATE) '-' DATEPART(day, DATE) AS DATETIME)
無法正確組裝日期時間值。
解
從特定日期組件建立日期時間的最佳方法是執行這些值的算術運算。以下語句示範了這種方法:
<code class="language-sql">SELECT DateAdd(day, @DayOfMonth - 1, DateAdd(month, @Month - 1, DateAdd(Year, @Year-1900, 0)))</code>
此語句利用了 SQL Server 中日期時間值的內部表示形式,其中第一部分錶示自 1900 年 1 月 1 日以來的天數,第二部分錶示一天的小數部分(時間)。
替代方案
從 SQL Server 2012 開始,引入了名為 DATEFROMPARTS(year, month, day)
的內建函數,可直接用於此目的:
<code class="language-sql">SELECT DATEFROMPARTS(@Year, @Month, @DayOfMonth)</code>
閏年考慮
處理閏年時,請務必確保先執行年份加法,以考慮 2 月的額外一天。以下修改後的語句解決了這個問題:
<code class="language-sql">SELECT DateAdd(month, @Month - 1, DateAdd(year, @Year-1900, @DayOfMonth - 1))</code>
結論
透過採用這些方法,開發人員可以有效地從 T-SQL 中的單一日、月和年元件建立日期時間值,確保日期表示的準確性和閏年的正確處理。
以上是如何在 T-SQL 中根據日、月和年正確建立日期時間值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!