DATEDIFF – Tính thời gian giữa 2 mốc thời gian

DATEDIFF: trả lại một số (number) giữa 2 ngày. Đơn vị số có thể trở về ngày, tháng, tuần trong năm nay, … tùy chọn số đối số để chuyển đến. Do dữ liệu lưu kiểu datetime có tất cả các ngày và thời gian, nhưng chúng ta chỉ quan tâm đến 1 trong ngày, tháng, năm, … thì DATEDIFF là lựa chọn tốt cho để so sánh, tính toán khoảng thời gian giữa 2 ngày,  bạn chỉ  so sánh thời gian, ngày, tháng, năm tùy vào đối số truyền vào. Hàm này rất rất tiện lợi và linh hoạt nhờ vào bảng đối số bên dưới.

Cú pháp:

DATEDIFF (đối số, ngày bắt đầu, ngày kết thúc)

Trong đó:

Đối số Diễn giải
Year yy, yyyy
quarter qq, q
Month mm, m
dayofyear dy, y
Day dd, d
Week wk, ww
Hour hh
minute mi, n
second ss, s
millisecond ms

Ví dụ:
Tổng số trở lại giữa ngày ngày ngày hiện tại và bảng kết quả trong bảng đề standard dữ liệu cơ sở dữ liệu Quán ruou này. Bởi vì tổng số ngày, nên đối số là chuyển giao day.

Use Pubs
SELECT DATEDIFF (day, pubdate, getdate ()) AS TongSoNgay From titles

Ghi chú:

Lần lược thay đối số day cho tất cả các trường hợp còn lại


20 comments

  1. Mình muốn lấy giá trị giữa từ tháng năm đến tháng năm thì làm sao vậy bạn?

  2. hàm datediffe(dd, ngày1,ngày 2) chỉ trừ 2 ngày cho nhau mà ko quan tâm đến ngày tháng.Vậy tính thế nào được tổng số ngày hả chị? anh chị giúp em ngay với

  3. hàm datediffe(dd, ngày1,ngày 2) chỉ trừ 2 ngày cho nhau mà ko quan tâm đến tháng và năm.Vậy tính thế nào được 1 giá trị ngày 2 trừ cho ngày 1 rồi so sánh với 0 ạ?
    ví dụ: ngày 1: 15/3/2012
    ngày 2: 1/4/2012
    từ đó thấy rõ ngày 2 lớn hơn ngày 1 nhưng nếu sử dụng hàm datediff(day,ngày1,ngay2)= -14
    vì nó ko quan tâm đến tháng. nên nó ra số âm.
    trường hợp ngày 1 là 15/3/2012 ;ngày 2 là 17/3/2012 lại ra số dương.

    1. SQL rất thông minh, nó sẽ tính chính xác số ngày sẽ không bị âm. Code bạn bị âm có thể do một trong 2 lý do sau:

      • Ngày 1, ngày 2 của bạn chưa phải kiểu date
      • Bạn viết thẳng trên query, như bạn quên mất định dạng của nó là yyyy-mm-dd
  4. Anh chj oj cho em hoj cau nay voj. Tinh tong chi phi benh nhan phai tra cho cac xet nghiem trong dot nhap vien tu ngay (ngay vao) la 12/04/2013. Xet nghjem trog dot nhap vien la xet nghjem dc thuc hjen tro gjua ngay vao va ngay ra cua benh nhan, ngay ra cua benh nhan co the la null neu benh nhan chua ra vien

  5. mình đang làm về đề tài cho thuê sách online. h có 1 account thuê 1 cuốn sách. khi thuê có lưu lại thời gian vào csdl. mình muốn viết 1 hàm vào sql để cứ qua mỗi ngày là sql nó tự update số ngày đã thuê thì phải làm sao ạ ?

  6. E muốn tính ngày trả
    ví dụ như ngày vay là ngày 1/1//2016
    ngaytra1 là 15/1/2016
    ngaytra2 là 15/2/2016
    ngaytra3 la 30/4/2016
    so ngay tra lan 1 là lay ngatra – ngayvay
    ngay tra lan 2 bang ngaytra2 – ngaytra1
    vay moi người cho e hỏi làm câu lệnh trong sql auto sẽ như thế nào ạ

  7. SQL sẽ tính chính xác số ngày theo đúng trên lịch luôn. Các bạn thử copy 3 dòng lệnh này chạy đồng thời trên SQL thì sẽ rõ:
    select DATEDIFF(DAY,’02-01-2017′,’02-01-2017′)
    select DATEDIFF(DAY,’02-01-2017′,’03-01-2017′)
    select DATEDIFF(DAY,’03-01-2017′,’04-01-2017′)

  8. Trời em muốn tính trong 2 khoảng thời gian có bao nhiêu bản ghi thỏa mãn thì em phải ghi như thế nào vậy ad .

Leave a Reply

Your email address will not be published. Required fields are marked *