So sánh hàm DATEDIFF và hàm BETWEEN trong SQL

Ở đây chúng ta chỉ so sánh khi thao tác trên kiểu dữ liệu datetime, không tính các kiểu dữ liệu khác cho hàm BETWEEN.
Hàm BETWEEN so sánh chính xác đến toàn bộ (ngày/tháng/năm/phút/giây/phần trăm giây) của khoảng thời gian cần so sánh.

Còn hàm DATEDIFF thì chỉ so sánh trên đơn vị thời gian mà ta chỉ định (ngày, tháng, năm, giờ, phút, giây hoặc phần trăm giây).

Ví dụ:

  • Khi ta truyền chỉ định là năm thì hàm DATEDIFF chỉ quan tâm đến số năm, và bỏ qua tất cả các thông số còn lại từ tháng, ngày, giờ, phút, giây và phần trăm giây
  • Khi ta truyền chỉ định là tháng thì hàm DATEDIFF chỉ quan tâm đến tháng (và tự động dựa vào năm mà tháng đó thuộc), nó bỏ qua ngày, giờ, phút, giây và phần trăm giây.
  • Khi ta truyền vào chỉ định là ngày thì hàm DATEDIFF chỉ quan tâm đến ngày/tháng/năm, và không quan tâm đến giờ, phút, giây và phần trăm giây giây.
  • Và tương tự cho giờ/phút/giây/phần trăm giây (tham khảo các chỉ định (đối số) của hàm DATEDIFF)

Ví dụ cụ thể:

Chúng ta có khoảng thời gian là [27/7/2010 03:55:00 , 16/9/2010 03:23:23], và ngày chúng ta đem đi so sánh là 27/7/2010 03:50:44. Nếu ta dùm hàm BETWEEN thì ngày đem so sánh sẽ không thuộc khoảng so sánh. Ngày so sáng nhỏ hơn ngày bắt đầu khoảng thời gian do số phút bé hơn.

Nhưng nếu chúng ta dùng hàm DATEDIFF, với đối số ngày thì ngày chúng ta đem so sánh thuộc khoảng thời gian cần so sánh.

Mỗi hàm có một ưu điểm riêng, nhưng tính về mức độ chi ly, tiện lợi, giải quyết nhiều trường hợp thì hàm DATEDIFF được sử dụng nhiều hơn­­ hàm BETWEEN.


Leave a Reply

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