Hàm so sánh thời gian trong SQL

Standard Date Formats
Date Format Standard SQL Statement Sample Output
Mon DD YYYY 1
HH:MIAM (or PM)
Default SELECT CONVERT(VARCHAR(20), GETDATE(), 100) Jan 1 2005 1:29PM 1
MM/DD/YY USA SELECT CONVERT(VARCHAR(8), GETDATE(), 1) AS [MM/DD/YY] 11/23/98
MM/DD/YYYY USA SELECT CONVERT(VARCHAR(10), GETDATE(), 101) AS [MM/DD/YYYY] 11/23/1998
YY.MM.DD ANSI SELECT CONVERT(VARCHAR(8), GETDATE(), 2) AS [YY.MM.DD] 72.01.01
YYYY.MM.DD ANSI SELECT CONVERT(VARCHAR(10), GETDATE(), 102) AS [YYYY.MM.DD] 1972.01.01
DD/MM/YY British/French SELECT CONVERT(VARCHAR(8), GETDATE(), 3) AS [DD/MM/YY] 19/02/72
DD/MM/YYYY British/French SELECT CONVERT(VARCHAR(10), GETDATE(), 103) AS [DD/MM/YYYY] 19/02/1972
DD.MM.YY German SELECT CONVERT(VARCHAR(8), GETDATE(), 4) AS [DD.MM.YY] 25.12.05
DD.MM.YYYY German SELECT CONVERT(VARCHAR(10), GETDATE(), 104) AS [DD.MM.YYYY] 25.12.2005
DD-MM-YY Italian SELECT CONVERT(VARCHAR(8), GETDATE(), 5) AS [DD-MM-YY] 24-01-98
DD-MM-YYYY Italian SELECT CONVERT(VARCHAR(10), GETDATE(), 105) AS [DD-MM-YYYY] 24-01-1998
DD Mon YY 1 SELECT CONVERT(VARCHAR(9), GETDATE(), 6) AS [DD MON YY] 04 Jul 06 1
DD Mon YYYY 1 SELECT CONVERT(VARCHAR(11), GETDATE(), 106) AS [DD MON YYYY] 04 Jul 2006 1
Mon DD, YY 1 SELECT CONVERT(VARCHAR(10), GETDATE(), 7) AS [Mon DD, YY] Jan 24, 98 1
Mon DD, YYYY 1 SELECT CONVERT(VARCHAR(12), GETDATE(), 107) AS [Mon DD, YYYY] Jan 24, 1998 1
HH:MM:SS SELECT CONVERT(VARCHAR(8), GETDATE(), 108) 03:24:53
Mon DD YYYY HH:MI:SS:MMMAM (or PM) 1 Default +
milliseconds
SELECT CONVERT(VARCHAR(26), GETDATE(), 109) Apr 28 2006 12:32:29:253PM 1
MM-DD-YY USA SELECT CONVERT(VARCHAR(8), GETDATE(), 10) AS [MM-DD-YY] 01-01-06
MM-DD-YYYY USA SELECT CONVERT(VARCHAR(10), GETDATE(), 110) AS [MM-DD-YYYY] 01-01-2006
YY/MM/DD SELECT CONVERT(VARCHAR(8), GETDATE(), 11) AS [YY/MM/DD] 98/11/23
YYYY/MM/DD SELECT CONVERT(VARCHAR(10), GETDATE(), 111) AS [YYYY/MM/DD] 1998/11/23
YYMMDD ISO SELECT CONVERT(VARCHAR(6), GETDATE(), 12) AS [YYMMDD] 980124
YYYYMMDD ISO SELECT CONVERT(VARCHAR(8), GETDATE(), 112) AS [YYYYMMDD] 19980124
DD Mon YYYY HH:MM:SS:MMM(24h) 1 Europe default + milliseconds SELECT CONVERT(VARCHAR(24), GETDATE(), 113) 28 Apr 2006 00:34:55:190 1
HH:MI:SS:MMM(24H) SELECT CONVERT(VARCHAR(12), GETDATE(), 114) AS [HH:MI:SS:MMM(24H)] 11:34:23:013
YYYY-MM-DD HH:MI:SS(24h) ODBC Canonical SELECT CONVERT(VARCHAR(19), GETDATE(), 120) 1972-01-01 13:42:24
YYYY-MM-DD HH:MI:SS.MMM(24h) ODBC Canonical
(with milliseconds)
SELECT CONVERT(VARCHAR(23), GETDATE(), 121) 1972-02-19 06:35:24.489
YYYY-MM-DDTHH:MM:SS:MMM ISO8601 SELECT CONVERT(VARCHAR(23), GETDATE(), 126) 1998-11-23T11:25:43:250
DD Mon YYYY HH:MI:SS:MMMAM 1 Kuwaiti SELECT CONVERT(VARCHAR(26), GETDATE(), 130) 28 Apr 2006 12:39:32:429AM 1
DD/MM/YYYY HH:MI:SS:MMMAM Kuwaiti SELECT CONVERT(VARCHAR(25), GETDATE(), 131) 28/04/2006 12:39:32:429AM

Nhìn vào bảng trên, nếu bạn cần so sánh DateInDatabase trong CSDL và ngày hiện tại thì bạn chỉ cần viết như sau:

1.SELECT *

2.FROM Table

3.WHERE (CONVERT(VARCHAR(25), GETDATE(), 101) > CONVERT(VARCHAR(25), DateInDatabase, 101)

Hàm so sánh thời gian trong SQL

1/- Hàm DATEADD :

Với cú pháp hàm DATEADD bên dưới có kết quả trả về là một ngày mới sau khi đã cộng thêm hoặc trừ đi theo một đơn vị thời gian bất kỳ cho một ngày chỉ định.

Cú pháp :

Hàm so sánh thời gian trong SQL
Trong đó :

• Đơn vị : là đơn vị thời gian dùng cho việc giảm hoặc tăng ngày, có thể là ngày (dd), tháng (mm), năm (yy), …

• Con số : là một số nguyên có thể âm hoặc dương chỉ định việc giảm hoặc tăng theo đơn vị thời gian chỉ định trước đó.

• Ngày chỉ định : là một biểu thức, tên cột dữ liệu, giá trị cụ thể có kiểu dữ liệu ngày.

• Ngày mới : là một giá trị ngày mới sau khi đã tăng hoặc giảm.

Ví dụ :,

Để hiển thị thông tin danh sách đơn đặt hàng có kèm theo ngày hết hạn nhận hàng. Biết rằng ngày hết hạn nhận hàng được tính là 20 ngày sau ngày đặt hàng. Bạn sử dụng hàm DATEADD như sau :

Hàm so sánh thời gian trong SQL
Kết quả truy vấn trả về :

Hàm so sánh thời gian trong SQL

2/- Hàm DATEDIFF :

Với cú pháp hàm DATEDIFF bên dưới có kết quả trả về là một số nguyên, nói lên khoảng cách đại số của hai ngày theo một đơn vị thời gian bất kỳ.

Cú pháp :

Hàm so sánh thời gian trong SQL
Trong đó :

• Đơn vị : là đơn vị thời gian dùng để chỉ định việc so sánh hai ngày, có thể là ngày (dd), tháng (mm), năm (yy), …

• Ngày1, Ngày2 : là các biểu thức, tên cột dữ liệu, giá trị cụ thể có kiểu dữ liệu ngày.

• Số nguyên : là một số nguyên có thể âm hoặc dương trả về khoảng cách đại số giữa ngày1 và ngày2.

Ví dụ :

Để hiển thị thông tin danh sách đơn đặt hàng có kèm theo số ngày chênh lệch giữa ngày đặt hàng và ngày nhận hàng dự kiến. Bạn sử dụng hàm DATEDIFF như sau :

Hàm so sánh thời gian trong SQL
Kết quả truy vấn trả về :

Hàm so sánh thời gian trong SQL

3/- Hàm DATENAME :

Với cú pháp hàm DATENAME bên dưới có kết quả trả về là chuỗi thời gian đại diện của một ngày chỉ định theo một đơn vị thời gian bất kỳ.

Cú pháp :

Hàm so sánh thời gian trong SQL
Trong đó :

• Đơn vị : là đơn vị thời gian dùng để chỉ định sẽ lấy ra chuỗi thời gian đại diện, có thể là ngày (dd), tháng (mm), năm (yy), …

• Ngày : là một biểu thức, tên cột dữ liệu, giá trị cụ thể có kiểu dữ liệu ngày.

• Chuỗi : trả về chuỗi thời gian đại diện.

Ví dụ :

Để hiển thị thông tin danh sách đơn đặt hàng có kèm cột thứ trong tuần của ngày đặt hàng. Bạn sử dụng hàm DATENAME như sau :

Hàm so sánh thời gian trong SQL
Kết quả truy vấn trả về :

Hàm so sánh thời gian trong SQL

4/- Hàm GETDATE :

Với cú pháp đơn giản của hàm GETDATE bên dưới có kết quả trả về là ngày giờ hiện hành của hệ thống Microsoft SQL Server.

Cú pháp :

Hàm so sánh thời gian trong SQL
Ví dụ :

Để hiển thị ngày giờ hiện hành. Bạn sử dụng hàm GETDATE như sau :

Hàm so sánh thời gian trong SQL
Kết quả truy vấn trả về :

Hàm so sánh thời gian trong SQL

5/- Hàm DATEPART :

Với cú pháp hàm DATEPART bên dưới có kết quả trả về là một số nguyên chỉ định thời gian đại diện của một ngày theo một đơn vị thời gian bất kỳ.

Cú pháp :

Hàm so sánh thời gian trong SQL
Trong đó :

• Đơn vị : là đơn vị thời gian dùng để chỉ định sẽ lấy ra một con số, có thể là ngày (dd), tháng (mm), năm (yy), …

• Ngày : là một biểu thức, tên cột, giá trị cụ thể có kiểu dữ liệu ngày.

• Số nguyên : trả về số thời gian đại diện. Đối với các ngày trong tuần nếu kết quả là 1 thì xem như là chủ nhật, 2 là thức hai … và 7 là thứ bảy.

Ví dụ :

Để hiển thị các đơn đặt hàng theo từng tháng trong năm 2002. Bạn sử dụng hàm DATEPART như sau :

Hàm so sánh thời gian trong SQL
Kết quả truy vấn trả về :

Hàm so sánh thời gian trong SQL

6/- Hàm DAY, MONTH, YEAR :

Với cú pháp chung bên dưới của các hàm DAY, MONTH, YEAR có kết quả trả về là một số nguyên chỉ định ngày (day), tháng (month), năm (year) của một ngày bất kỳ. Bạn có thể sử dụng các hàm này hoặc hàm DATEPART tương ứng với các đơn vị thời gian là dd, mm, yy.

Cú pháp :

Hàm so sánh thời gian trong SQL
Ví dụ :

Minh họa như ví dụ trên nhưng bạn sử dụng hàm MONTH như sau :

Hàm so sánh thời gian trong SQL
Kết quả truy vấn trả về :

Hàm so sánh thời gian trong SQL

Hết