Cách sử dụng hàm DATEDIFF (Transact-SQL) để trừ 2 khoảng thời gian trong sql server

Cách sử dụng hàm DATEDIFF (Transact-SQL) để trừ 2 khoảng thời gian trong sql server. Đề tính được số khoảng thời gian ( giờ, phút, giây, ngày, tháng,..) giữ 2 mốc thời gian bạn có thể sử dụng hàm DATEDIFF.
Cú pháp
DATEDIFF ( datepart , startdate , enddate )

Startdata: thời gian bắt đầu, enddata:thời gian kết thúc, là các kiểu dữ liệu time, date, smalldatetime, datetime, datetime2,  datetimeoffset . Trong hàm DATEDIFF chúng ta sẽ lấy enddate trừ cho startdate

Và dateapart như sau

datepartNhững chữ viết tắt
yearyy, yyyy
quarterqq, q
monthmm, m
dayofyeardy, y
daydd, d
weekwk, ww
hourhh
minutemi, n
secondss, s
millisecondms
microsecondmcs
nanosecondns

Các Ví dụ cách dùng hàm DATEDIFF

SELECT DATEDIFF(year, '2015-12-31 23:59:59.9999999'

, ‘2006-01-01 00:00:00.0000000’);

SELECT DATEDIFF(quarter, ‘2015-12-31 23:59:59.9999999’

, ‘2006-01-01 00:00:00.0000000’);

SELECT DATEDIFF(month, ‘2015-12-31 23:59:59.9999999’

, ‘2006-01-01 00:00:00.0000000’);

SELECT DATEDIFF(dayofyear, ‘2015-12-31 23:59:59.9999999’

, ‘2006-01-01 00:00:00.0000000’);

SELECT DATEDIFF(day, ‘2015-12-31 23:59:59.9999999’

, ‘2006-01-01 00:00:00.0000000’);

SELECT DATEDIFF(week, ‘2015-12-31 23:59:59.9999999’

, ‘2006-01-01 00:00:00.0000000’);

SELECT DATEDIFF(hour, ‘2015-12-31 23:59:59.9999999’

, ‘2006-01-01 00:00:00.0000000’);

SELECT DATEDIFF(minute, ‘2015-12-31 23:59:59.9999999’

, ‘2006-01-01 00:00:00.0000000’);

SELECT DATEDIFF(second, ‘2015-12-31 23:59:59.9999999’

, ‘2006-01-01 00:00:00.0000000’);

SELECT DATEDIFF(millisecond, ‘2015-12-31 23:59:59.9999999’

, ‘2006-01-01 00:00:00.0000000’);

Lưu ý

Việc thiết lập SET DATEFIRST không có tác dụng trên DATEDIFF. DATEDIFF luôn luôn sử dụng ngày Chủ nhật là ngày đầu tiên trong tuần để đảm bảo chức năng là xác định.

One thought on “Cách sử dụng hàm DATEDIFF (Transact-SQL) để trừ 2 khoảng thời gian trong sql server

  1. Pingback: Cách dùng hàm date_part để trừ 2 khoảng thời gian trong PostgreSQL | Phạm Duy Anh

Leave a Reply

Your email address will not be published.