SQL Server DATEFROMPARTS

Hiểu về hàm DATEFROMPARTS trong SQL Server

Trong SQL Server, hàm DATEFROMPARTS là một hàm rất hữu ích cho phép người dùng tạo ra một giá trị kiểu dữ liệu DATE từ ba thành phần riêng biệt: năm, tháng và ngày. Hàm này cực kỳ hữu ích trong các tình huống mà bạn cần xây dựng một ngày từ các phần riêng lẻ, thay vì phải làm việc với các chuỗi hoặc các kiểu dữ liệu khác.

Định nghĩa

DATEFROMPARTS(year, month, day) sẽ trả về giá trị kiểu DATE được tạo ra từ năm, tháng và ngày đã cho. Nếu các tham số không hợp lệ (ví dụ: nếu bạn cố gắng tạo một ngày không tồn tại như ngày 31 tháng 2), hàm sẽ trả về một lỗi.

Cú pháp

DATEFROMPARTS ( year, month, day )

Tham số

  • year: Một số nguyên đại diện cho năm. Nó phải nằm trong khoảng từ 1 đến 9999.
  • month: Một số nguyên đại diện cho tháng. Nó phải nằm trong khoảng từ 1 đến 12.
  • day: Một số nguyên đại diện cho ngày. Nó phải nằm trong khoảng từ 1 đến số ngày của tháng đã cho.

Ví dụ

Ví dụ 1: Tạo ngày từ các thành phần

SELECT DATEFROMPARTS(2023, 10, 25) AS CreatedDate;

Kết quả của truy vấn trên sẽ là 2023-10-25.

Ví dụ 2: Tạo ngày từ năm tháng ngày được lấy từ bảng

CREATE TABLE Events (EventID INT, Year INT, Month INT, Day INT);
INSERT INTO Events (EventID, Year, Month, Day)
VALUES (1, 2023, 10, 31), (2, 2023, 2, 30); 

SELECT EventID, 
       DATEFROMPARTS(Year, Month, Day) AS EventDate
FROM Events;

Kết quả sẽ trả về lỗi cho EventID 2 do ngày 30 tháng 2 không hợp lệ.

Ví dụ 3: Sử dụng hàm trong tính toán ngày

DECLARE @Year INT = 2023;
DECLARE @Month INT = 12;
DECLARE @Day INT = 25;

SELECT DATEFROMPARTS(@Year, @Month, @Day) AS HolidayDate,
       DATEADD(DAY, 10, DATEFROMPARTS(@Year, @Month, @Day)) AS FutureDate;

Kết quả sẽ là HolidayDate: 2023-12-25FutureDate: 2024-01-04.

Kết luận

Hàm DATEFROMPARTS là một công cụ mạnh mẽ trong SQL Server để tạo xây dựng ngày từ các thành phần riêng lẻ, giúp bạn xử lý và quản lý dữ liệu ngày tháng một cách hiệu quả hơn. Hãy thử sử dụng hàm này trong các truy vấn của bạn để nâng cao khả năng tương tác với dữ liệu ngày tháng!