Một số hàm ngày trong SQL Server

Một số hàm ngày SQL Server hay sử dụng trong làm phần mềm

Một số hàm xử lý ngày (date) trong sql server

  1. Ngày hiện hành trong SQL Server trong sql server
  2. Lấy tháng trong SQL Server trong sql server
  3. Tính thời gian sử dụng giờ vào, giờ ra trong sql server
  4. Xác định tổng ngày của 1 tháng trong sql server
  5. Xác định ngày bắt đầu tháng và ngày cuối tháng trong sql server
  6. Cộng trừ ngày trong SQL Server
  7. Hàm định dạng ngày trong SQL Server

1. Ngày hiện hành trong SQL Server

GETDATE()
Select GETDATE() as 'Ngay hom nay'

2. Lấy tháng trong SQL Server

MONTH( GETDATE())
Select MONTH( GETDATE()) as 'Thang nay la'

3 Tính thời gian sử dụng giờ vào , giờ ra trong SQL Server

Select GioVao,GioRa,GioVao
,DATEDIFF(hour,GioVao,GioRa) as Gio
,DATEDIFF(minute,GioVao,GioRa) as phut
  From tbChungTu

 

4. Xác định tổng ngày của 1 tháng trong sql server

--How to determine the number of days in a month in SQL Server
DECLARE @date DATETIME
SET @date = GETDATE()
-- Cách 1
select datediff(day, dateadd(day, 1-day(@date), @date),
              dateadd(month, 1, dateadd(day, 1-day(@date), @date)))
-- Cách 2
select DAY(DATEADD(DD,-1,DATEADD(MM,DATEDIFF(MM,-1,@DATE),0)))

Viết ra 1 function getDaysInMonth sql server

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:        <Author,,Name>
-- Create date: <Create Date, ,>
-- Description:    <Description, ,>
-- =============================================
-- select [dbo].[getDaysInMonth ](2024,4)
ALTER FUNCTION [dbo].[getDaysInMonth ]
(
    -- Add the parameters for the function here
    @Month int
,    @Year int
)
RETURNS int
AS
BEGIN
    -- Declare the return variable here
    DECLARE @kq int
    DECLARE @date DATETIME
    set @date =Cast(@Year as nvarchar(4)) + '-' +  Cast(@Month as nvarchar(4)) + '-1'
    select @kq=DAY(DATEADD(DD,-1,DATEADD(MM,DATEDIFF(MM,-1,@DATE),0)))
    return @kq
END

5. Xác định ngày bắt đầu tháng và ngày cuối tháng trong sql server

-- Giả sử ngày hiện tại là '2025-08-04'

-- Lấy ngày đầu tháng
SELECT DATEFROMPARTS(YEAR(GETDATE()), MONTH(GETDATE()), 1) AS NgayDauThang;
-- Kết quả: 2025-08-01

-- Lấy ngày cuối tháng
SELECT EOMONTH(GETDATE()) AS NgayCuoiThang;
-- Kết quả: 2025-08-31

 

 

6. Cộng trừ ngày trong sql server

    DECLARE @Ngay DateTime
    Set @Ngay=getDate()
    select DATEADD(day, -1, @Ngay)

7. Hàm định ngày ngày trong SQL Server

Có 2 hàm chính trong SQL Server để định dạng ngày tháng và thời gian, mỗi hàm có ưu điểm và cách sử dụng riêng.

FORMAT() (Khuyên dùng)

FORMAT() là hàm hiện đại và linh hoạt nhất, được giới thiệu từ SQL Server 2012. Nó cho phép bạn định dạng ngày tháng bằng cách sử dụng các chuỗi định dạng .NET và thậm chí hỗ trợ các định dạng theo vùng văn hóa (culture).

Cú pháp SQL:

FORMAT(giá_trị, định_dạng [, văn_hóa])
    giá_trị: Giá trị ngày tháng cần định dạng (ví dụ: GETDATE()).
    định_dạng: Một chuỗi định dạng .NET (ví dụ: 'yyyy-MM-dd', 'dd/MM/yyyy').
    văn_hóa: (Tùy chọn) Mã vùng văn hóa (ví dụ: 'vi-VN' cho tiếng Việt, 'en-US' cho tiếng Anh).

Ví dụ SQL:

-- Định dạng ngày hiện tại theo kiểu yyyy-MM-dd
SELECT FORMAT(GETDATE(), 'yyyy-MM-dd');
-- Kết quả: 2025-08-04

-- Định dạng ngày hiện tại theo kiểu dd/MM/yyyy
SELECT FORMAT(GETDATE(), 'dd/MM/yyyy');
-- Kết quả: 04/08/2025

-- Định dạng ngày hiện tại với cả thời gian
SELECT FORMAT(GETDATE(), 'dd/MM/yyyy HH:mm:ss');
-- Kết quả: 04/08/2025 10:40:00

-- Định dạng với tên thứ và tháng bằng tiếng Việt
SELECT FORMAT(GETDATE(), 'dddd, dd MMMM yyyy', 'vi-VN');
-- Kết quả: Thứ Hai, 04 Tháng Tám 2025

CONVERT()

CONVERT() là hàm truyền thống và rất mạnh mẽ để chuyển đổi kiểu dữ liệu. Nó cho phép định dạng ngày tháng bằng cách sử dụng các mã định dạng số.

Cú pháp SQL:

CONVERT(kiểu_dữ_liệu, biểu_thức [, mã_định_dạng])
    kiểu_dữ_liệu: Kiểu dữ liệu đích, thường là varchar hoặc nvarchar.
    biểu_thức: Giá trị ngày tháng cần chuyển đổi.
    mã_định_dạng: Một số nguyên xác định định dạng.

Ví dụ với các mã định dạng phổ biến:

Mã    Định dạng đầu ra    Ví dụ
101    MM/dd/yyyy    08/04/2025
103    dd/MM/yyyy    04/08/2025
112    yyyyMMdd    20250804
120    yyyy-MM-dd hh:mm:ss    2025-08-04 10:40:00
23    yyyy-MM-dd    2025-08-04

Ví dụ SQL:

-- Định dạng ngày hiện tại theo kiểu dd/MM/yyyy
SELECT CONVERT(varchar, GETDATE(), 103);
-- Kết quả: 04/08/2025

-- Định dạng ngày hiện tại theo kiểu yyyy-MM-dd hh:mm:ss
SELECT CONVERT(varchar, GETDATE(), 120);
-- Kết quả: 2025-08-04 10:40:00

Bài viết liên quan:

Một số hàm ngày SQL Server hay sử dụng trong làm phần mềm