首頁 > 資料庫 > mysql教程 > 如何在 T-SQL 中從單獨的日、月和年組成部分建立日期時間值?

如何在 T-SQL 中從單獨的日、月和年組成部分建立日期時間值?

Barbara Streisand
發布: 2025-01-16 14:00:06
原創
575 人瀏覽過

How to Create a Datetime Value from Separate Day, Month, and Year Components in T-SQL?

從各個日期部分在 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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板