從各個日期部分在 T-SQL 中建構 DATETIME 值
在舊版的 SQL Server(如 SQL Server 2005)中,直接從單獨的日、月和年元件建立 DATETIME
值可能會很棘手且容易出錯。本指南概述了可靠地實現這一目標的幾種方法。
方法一:使用DATEADD
進行日期時間建構
此方法利用 DATEADD
函數逐步建構 DATETIME
:
<code class="language-sql">DECLARE @DayOfMonth TINYINT; SET @DayOfMonth = 13; DECLARE @Month TINYINT; SET @Month = 6; DECLARE @Year INT; SET @Year = 2006; SELECT DATEADD(day, @DayOfMonth - 1, DATEADD(month, @Month - 1, DATEADD(year, @Year - 1900, 0)));</code>
從 @DayOfMonth
和 @Month
減去 1 說明 DATEADD
使用相對於基準日期(1900 年 1 月 1 日)的偏移。
方法 2:替代 DATEADD
語法
使用 DATEADD
的更簡潔的方法是:
<code class="language-sql">SELECT DATEADD(yy, @Year - 1900, DATEADD(m, @Month - 1, @DayOfMonth -1));</code>
這實現了相同的結果,但 DATEADD
呼叫的安排略有不同。
方法 3:DATEFROMPARTS
(SQL Server 2012 及更高版本)
SQL Server 2012及更高版本提供了方便的DATEFROMPARTS
功能:
<code class="language-sql">SELECT DATEFROMPARTS(@Year, @Month, @DayOfMonth);</code>
如果您的 SQL Server 版本支持,這是最簡單的方法。
處理閏年
雖然 DATEFROMPARTS
自動處理閏年,但 DATEADD
方法也夠強大,可以正確處理它們。在提供的範例中,閏年不需要特殊調整。
選擇最適合您的 SQL Server 版本和程式設計風格的方法。 如果您的 SQL Server 版本允許,DATEFROMPARTS
是首選方法,因為它簡單明了。
以上是如何在 T-SQL 中從單獨的日、月和年組成部分建立日期時間值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!