首页 > 数据库 > mysql教程 > 如何在 T-SQL 中从单独的日、月和年组成部分创建日期时间值?

如何在 T-SQL 中从单独的日、月和年组成部分创建日期时间值?

Barbara Streisand
发布: 2025-01-16 14:00:06
原创
576 人浏览过

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
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板