Thông tin liên hệ
- 036.686.3943
- admin@nguoicodonvn2008.info
DATEDIFF trong SQL Server được sử dụng khá phổ biến. Dưới đây là những điều bạn cần biết về hàm DATEDIFF trong SQL Server.
Thế giới lập trình vô cùng đa dạng với rất nhiều ngôn ngữ thú vị cho bạn tìm hiểu và học tập. Chỉ từ những dòng code, bạn có thể tạo ra những chương trình, ứng dụng vô cùng hữu ích.
Nếu đang muốn phát triển sự nghiệp trong ngành này, nhất định bạn phải biết cách dùng SQL Server. Nắm vững được nó, bạn dễ dàng quản lý cơ sở dữ liệu khi lập trình.
Học SQL Server về cơ bản không khó. Hãy bắt đầu từ những kiến thức cần thiết nhất. Quantrimang.com có sẵn một lộ trình học tập cho bạn có thể tham khảo. Ở bài viết này, chúng ta sẽ cùng nhau tìm hiểu về hàm DATEDIFF trong SQL Server.
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
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
Người mang gió
Data Engineering trong kỷ nguyên LLM: Những điều cần biết
Hướng dẫn sử dụng Genspark AI tạo slide cực đẹp
Thiết kế infographic trên Gamma AI chỉ bằng câu lệnh
Hướng dẫn dùng Codia AI trên Canva tạo thiết kế cực nhanh
7 mẹo dùng ChatGPT để tự động hóa công việc dữ liệu
Cách sử dụng ChatGPT để phát hiện các trò lừa đảo phishing
Cách sử dụng Claude AI để viết công thức Excel tức thì
Cách sử dụng Claude AI để viết công thức Excel tức thì
Cách chia sẻ NotebookLM công khai
5 mẹo biến OpenAI Codex thành AI coding agent mạnh mẽ hơn
Prompt tạo câu hỏi gợi mở và kiểm tra trên NotebookLM
Hướng dẫn tự tạo chatbot ôn tập cho học sinh trên Mizou
Prompt tạo ảnh mô phỏng phi hành gia Artemis II
Hướng dẫn thiết kế game thể thao trí tuệ
7 công cụ tạo website AI tốt nhất năm 2026
Lý do nhiều người vẫn sử dụng Grok thay vì ChatGPT hay Claude
7 cách kiếm tiền bằng AI trong năm 2026
Hướng dẫn xóa ảnh và video đã tạo trên Meta AI
Prompt mẫu thiết kế hoạt động học tập trên NotebookLM