从各个日期部分在 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中文网其他相关文章!