Home > Database > Mysql Tutorial > How to Create a Datetime Value from Separate Day, Month, and Year Components in T-SQL?

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

Barbara Streisand
Release: 2025-01-16 14:00:06
Original
575 people have browsed it

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

Constructing DATETIME Values in T-SQL from Individual Date Parts

In older versions of SQL Server (like SQL Server 2005), creating a DATETIME value directly from separate day, month, and year components can be tricky and prone to errors. This guide outlines several methods to achieve this reliably.

Method 1: Using DATEADD for Datetime Construction

This method leverages the DATEADD function to build the DATETIME step-by-step:

<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>
Copy after login

The subtraction of 1 from @DayOfMonth and @Month accounts for the fact that DATEADD works with offsets from the base date (January 1st, 1900).

Method 2: Alternative DATEADD Syntax

A more concise approach using DATEADD is:

<code class="language-sql">SELECT DATEADD(yy, @Year - 1900,  
               DATEADD(m, @Month - 1, @DayOfMonth -1));</code>
Copy after login

This achieves the same result with a slightly different arrangement of the DATEADD calls.

Method 3: DATEFROMPARTS (SQL Server 2012 and later)

SQL Server 2012 and later versions offer the convenient DATEFROMPARTS function:

<code class="language-sql">SELECT DATEFROMPARTS(@Year, @Month, @DayOfMonth);</code>
Copy after login

This is the most straightforward method if your SQL Server version supports it.

Handling Leap Years

While DATEFROMPARTS automatically handles leap years, the DATEADD methods are robust enough to handle them correctly as well. No special adjustments are needed for leap years in the provided examples.

Choose the method most suitable for your SQL Server version and coding style. DATEFROMPARTS is the preferred approach for its simplicity and clarity if your SQL Server version allows it.

The above is the detailed content of How to Create a Datetime Value from Separate Day, Month, and Year Components in T-SQL?. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template