Thông tin liên hệ
- 036.686.3943
- admin@nguoicodonvn2008.info
Datediff trong SQL là gì? Bài viết sẽ hướng dẫn bạn cách dùng hàm Datediff trong SQL Server.
Hàm DATEDIFF() trong SQL Server là một công cụ mạnh mẽ được sử dụng để tính toán chênh lệch giữa hai ngày hoặc giờ. Hàm này trả về một số nguyên biểu thị số ranh giới ngày hoặc giờ giữa các ngày được chỉ định, dựa trên ngày được chỉ định. Hàm này rất cần thiết cho các tác vụ liên quan đến việc so sánh ngày, tính toán thời lượng hoặc đo khoảng thời gian trong SQL Server.
Về cơ bản, cách dùng hàm DATEDIFF của SQL không quá khó. Dưới đây là hướng dẫn chi tiết.
DATEDIFF trong SQL Server là một hàm cơ bản được dùng để triển khai các phép tính dựa trên ngày tháng. Nó cho kết quả là một giá trị số nguyên theo đơn vị ngày tháng như năm, tháng, ngày, phút và giây. Định nghĩa chính thức của Datediff SQL Server là tính sự khác biệt giữa hai ngày tháng.
Hàm DATEDIFF SQL Server có những đặc điểm nổi bật sau:
Để sử dụng hàm DATEDIFF trong SQL Server, ta dùng cú pháp như sau:
DATEDIFF(dangthoigian, thoigian1, thoigian2)
Tham số:
| Giá trị | Giải thích |
| year, yyyy, yy | Năm |
| quarter, qq, q | Quý |
| month, mm, m | Tháng |
| dayofyear | Ngày trong năm |
| day, dy, y | Ngày |
| week, ww, wk | Tuần |
| weekday, dw, w | Ngày trong tuần |
| hour, hh | Giờ |
| minute, mi, n | Phút |
| second, ss, s | Giây |
| millisecond, ms | Milli giây |
Lưu ý:
Hãy xem và khám phá một số ví dụ về hàm DATEDIFF trong SQL Server.
SELECT DATEDIFF(year, '2019/04/28', '2021/04/28');Result: 2SELECT DATEDIFF(yyyy, '2019/04/28', '2021/04/28');Result: 2SELECT DATEDIFF(yy, '2019/04/28', '2021/04/28');Result: 2SELECT DATEDIFF(month, '2019/01/01', '2019/04/28');Result: 3SELECT DATEDIFF(day, '2019/01/01', '2019/04/28');Result: 117SELECT DATEDIFF(hour, '2019/04/28 08:00', '2019/04/28 10:45');Result: 2SELECT DATEDIFF(minute, '2019/04/28 08:00', '2019/04/28 10:45');Result: 165
Ví dụ này dùng hàm DATEDIFF để so sánh sự khác biệt giữa hai ngày tháng ở các phần khác nhau:
DECLARE
@start_dt DATETIME2= '2019-12-31 23:59:59.9999999',
@end_dt DATETIME2= '2020-01-01 00:00:00.0000000';
SELECT
DATEDIFF(year, @start_dt, @end_dt) diff_in_year,
DATEDIFF(quarter, @start_dt, @end_dt) diff_in_quarter,
DATEDIFF(month, @start_dt, @end_dt) diff_in_month,
DATEDIFF(dayofyear, @start_dt, @end_dt) diff_in_dayofyear,
DATEDIFF(day, @start_dt, @end_dt) diff_in_day,
DATEDIFF(week, @start_dt, @end_dt) diff_in_week,
DATEDIFF(hour, @start_dt, @end_dt) diff_in_hour,
DATEDIFF(minute, @start_dt, @end_dt) diff_in_minute,
DATEDIFF(second, @start_dt, @end_dt) diff_in_second,
DATEDIFF(millisecond, @start_dt, @end_dt) diff_in_millisecond;
Kết quả:
![]()
Ví dụ sau dùng hàm DATEDIFF() để so sánh ngày tháng vận chuyển được yêu cầu với ngày tàu chạy theo ngày và trả về kết quả đơn hàng đúng hạn hoặc muộn:
SELECT
order_id,
required_date,
shipped_date,
CASE
WHEN DATEDIFF(day, required_date, shipped_date) < 0
THEN 'Late'
ELSE 'OnTime'
END shipment
FROM
sales.orders
WHERE
shipped_date IS NOT NULL
ORDER BY
required_date;
Kết quả:

Dùng hàm so sánh ngày trong SQL Server và nhận chênh lệch âm giữa hai giá trị ngày tháng, tính theo ngày.
Ví dụ:
SELECT DATEDIFF(day, '2021/2/1', '2010/12/12');
Kết quả:
-3704
Dùng hàm DATEDIFF() và lấy sự khác biệt giữa hai giá trị ngày tháng, bao gồm thời gian, tính theo giờ.
Ví dụ:
SELECT DATEDIFF(hour, '2019/2/1 09:55', '2020/12/12 07:45');
Kết quả:
16318
Tóm lại, những điều cần ghi nhớ khi dùng hàm DATEDIFF trong SQL Server
Khi làm việc với DATEDIFF(), bạn dễ gặp phải các vấn đề liên quan đến cú pháp, thứ tự đối số hoặc hành vi cụ thể của cơ sở dữ liệu. Sau đây là các lỗi thường gặp và cách giải quyết:
Vấn đề: Sử dụng dấu ngoặc kép quanh datepart hoặc kiểu trích dẫn không nhất quán cho các ký tự ngày.
Giải pháp: Luôn dùng trích dẫn cho datepart và sử dụng dấu ngoặc kép đơn cho ngày.
-- Sai
SELECT DATEDIFF('year', '2023-01-01', '2024-01-01');
-- Đúng
SELECT DATEDIFF(year, '2023-01-01', '2024-01-01');
Vấn đề: DATEDIFF() của MySQL chỉ hỗ trợ chênh lệch ngày.
Giải pháp: Sử dụng TIMESTAMPDIFF() cho các đơn vị chi tiết như năm hoặc tháng.
-- Đúng (MySQL) SELECT TIMESTAMPDIFF(YEAR, '2023-01-01', '2024-01-01') AS years_difference; -- Returns 1
Vấn đề: Đảo ngược ngày bắt đầu và ngày kết thúc có thể dẫn đến kết quả tiêu cực không mong muốn.
Giải pháp: Đảm bảo ngày bắt đầu đứng đầu. Sử dụng ABS() nếu chỉ có độ lớn là quan trọng.
-- Sai SELECT DATEDIFF(day, '2023-01-05', '2023-01-01'); -- Returns -4 -- Đúng SELECT DATEDIFF(day, '2023-01-01', '2023-01-05'); -- Returns 4
Vấn đề: Định dạng ngày tháng không rõ ràng (ví dụ: MM/DD/YYYY so với DD/MM/YYYY) có thể gây ra lỗi.
Giải pháp: Sử dụng tiêu chuẩn ISO 8601 (YYYY-MM-DD) để tránh nhầm lẫn.
-- Viết đúng SELECT DATEDIFF(day, '2023-01-01', '2023-12-31'); -- Kết quả: 364
Vấn đề: Sự khác biệt lớn vượt quá ±2.147.483.647 gây ra lỗi tràn. Giải pháp: Sử dụng DATEDIFF_BIG() cho các phạm vi lớn.
-- Viết đúng SELECT DATEDIFF_BIG(day, '0001-01-01', '9999-12-31'); -- Kết quả: 2,920,862,800
Trên đây là những vấn đề cơ bản về hàm DATEDIFF() trong SQL Server, giúp bạn tính toán sự khác biệt giữa hai giá trị ngày tháng. Hi vọng bài viết hữu ích với các bạn.
Nguồn tin: Quantrimang.com:
Ý kiến bạn đọc
Những tin mới hơn
Những tin cũ hơn
Xây dựng một workflow AI thực tế từ đầu đến cuối
Cách xuất nội dung ChatGPT sang Google Docs không mất định dạng
Đánh giá và cải thiện thói quen sử dụng AI
Perplexity AI là gì?
Cách kết nối Google Drive với ChatGPT
Meitu VIP vs Meitu SVIP: Nên lựa chọn gói chỉnh ảnh nào?
Tại sao Claude for Teachers lại tạo nên sự khác biệt?
Hướng dẫn dùng Higgsfield tạo video trên ChatGPT
Cách dùng NotebookLM trong Google Docs
Hướng dẫn dùng Dola AI tạo bảng dữ liệu từ câu lệnh
Chỉnh sửa kế hoạch giảng dạy do Claude for Teachers tạo dưới góc độ một biên tập viên
TOP công cụ AI tạo biểu mẫu và khảo sát
Chỉnh sửa nội dung giáo án do Claude for Teachers tạo
Tìm hiểu về các tính năng Home, Code và Autopilot mới trong Copilot
Hướng dẫn đăng ký tài khoản quảng cáo ChatGPT
Microsoft Frontier: Chương trình cho phép bạn trải nghiệm sớm các tính năng AI trước khi chúng được phát hành rộng rãi
OpenClaw là gì?
Hướng dẫn dùng Lovable AI trên ChatGPT tạo website cực nhanh
Học kỹ năng Mô tả: Hoàn thành prompt AI đầu tiên có thể sử dụng được
Tự tạo ứng dụng quản lý công việc trên Gemini rất đơn giản
Cách lập trình chuyên nghiệp hơn, dễ dàng hơn với tính năng Tệp trên Grok
Hướng dẫn cài đặt và sử dụng n8n trên Windows 11
Công thức tính diện tích hình Elip
Hướng dẫn ngắt kết nối ứng dụng trên ChatGPT
8 ứng dụng Microsoft Store miễn phí giúp Windows tốt hơ
Hướng dẫn tạo đoạn hội thoại cho topic trên Twee
6 cách mở Computer/System Properties trong Windows 10
Đừng chia sẻ ảnh cho đến khi bạn chạy kiểm tra siêu dữ liệu này!
Bức tranh tổng quan về hỗ trợ khách hàng tích hợp AI
Cách sửa lỗi There Are Currently No Power Options Available Windows