Trả về một Biến_thể (Dài) xác định số khoảng thời gian giữa hai ngày cụ thể.
Cú pháp
DateDiff ( interval, date1, date2 [, firstdayofweek] [, firstweekofyear] )
Cú pháp hàm DateDiff có các đối số sau đây:
Đối số |
Mô tả |
---|---|
interval |
Bắt buộc. Biểu thức chuỗi là khoảng thời gian bạn sử dụng để tính toán chênh lệch giữa ngày_1và ngày_2. |
ngày_1, ngày_2 |
Bắt buộc. Biến _thể (Ngày). Hai ngày bạn muốn sử dụng để tính toán. |
ngày_đầu_tiên_của_tuần |
Không bắt buộc. Một hằng xác định ngày đầu tiên của tuần. Nếu không được xác định, sẽ giả định là Chủ Nhật. |
tuần_đầu_tiên_của_năm |
Không bắt buộc. Hằng số xác định tuần đầu tiên của năm. Nếu không được xác định, giả định tuần đầu tiên của năm là tuần có ngày 01 Tháng Một. |
Cài đặt
Khoảng thời giantham đối có các thiết đặt sau:
Thiết đặt |
Mô tả |
---|---|
yyyy |
Năm |
q |
Quý |
m |
Tháng |
y |
Ngày trong năm |
d |
Ngày |
w |
Weekday |
ww |
Tuần |
h |
Giờ |
n |
Phút |
. |
Giây |
Tham đối ngày_đầu_tiên_của_tuần có các thiết đặt sau:
Hằng số |
Giá trị |
Mô tả |
---|---|---|
vbUseSystem |
0 |
Sử dụng cài đặt API NLS. |
vbSunday |
1 |
Chủ nhật (mặc định) |
vbMonday |
2 |
Thứ Hai |
vbTuesday |
3 |
Thứ ba |
vbWednesday |
4 |
Thứ Tư |
vbThursday |
5 |
Thứ Năm |
vbFriday |
6 |
Thứ Sáu |
vbSaturday |
7 |
Thứ Bảy |
Hằng số |
Giá trị |
Mô tả |
---|---|---|
vbUseSystem |
0 |
Sử dụng cài đặt API NLS. |
vbFirstJan1 |
1 |
Bắt đầu với tuần có ngày 1 tháng 1 (mặc định). |
vbFirstFourDays |
2 |
Bắt đầu với tuần đầu tiên có ít nhất bốn ngày trong năm mới. |
vbFirstFullWeek |
3 |
Bắt đầu với tuần đầy đủ đầu tiên trong năm. |
Chú thích
Bạn có thể dùng hàm DateDiff để xác định có bao nhiêu khoảng thời gian xác định tồn tại giữa hai ngày. Ví dụ, bạn có thể dùng Hàm DateDiff để tính toán số ngày giữa hai ngày hoặc số tuần từ hôm nay đến cuối năm.
Để tính toán số ngày giữa ngày_1 và ngày _2, bạn có thể dùng Ngày trong năm ("y") hoặc Ngày ("d"). Khi interval là Weekday ("w"), DateDiff trả về số tuần giữa hai ngày. Nếu date1 rơi vào thứ hai, DateDiff sẽ đếm số thứ hai cho đến ngày 2. Nó được tính ngày_2 nhưng không phải là ngày_1. Nếu khoảng thời gian là Week ("ww"), thì hàm DateDiff trả về số tuần lịch giữa hai ngày. Số ngày Chủ Nhật tính từ ngày 1 đến ngày 2. DateDiff đếmngày 2 nếu nó rơi vào một chủ nhật; nhưng nó không đếm date1, ngay cả khi nó rơi vào một ngày chủ nhật.
Nếu date1 tham chiếu đến một điểm muộn hơn date2, hàm DateDiff trả về một số âm.
Tham đối ngày_đầu_tiên_ của_tuần ảnh hưởng đến các phép tính sử dụng ký hiệu khoảng "w" và "ww".
Nếu date1 hoặc date2 là một ngày ký tự ngày, thì năm được chỉ định sẽ trở thành một phần vĩnh viễn của ngày đó. Tuy nhiên, nếu date1 hoặc date2 được đặt trong dấu ngoặc kép (" "), và bạn bỏ năm, năm hiện tại được chèn vào mã của bạn mỗi khi biểu thức date1 hoặc date2 được đánh giá. Điều này cho phép viết mã có thể được sử dụng trong các năm khác nhau.
Khi so sánh ngày 31 tháng 12 với ngày 1 tháng 1 của năm kế tiếp ngay lập tức, DateDiff cho Year ("yyyy") trả về 1, mặc dù chỉ có một ngày đã trôi qua.
Lưu ý: Đối với ngày_1và ngày_2, nếu cài đặt thuộc tính Lịch là lịch Gregory, ngày được cung cấp phải là lịch Gregory. Nếu lịch là Hijri, ngày tháng được cung cấp phải là Hijri.
Ví dụ về Truy vấn DateDiff
Biểu thức |
Kết quả |
---|---|
SELECT DateDiff("yyyy",#01/01/2010#,[DateofSale]) AS Expr1 FROM ProductSales; |
Trả về chênh lệch giữa Date2 và Date1 (xem Date1 là cũ nhất và Date2 là mới nhất) là số 'Năm'. Kết quả: Chênh lệch giữa các giá trị trong trường "DateofSale" và ngày "01/01/2010" là số 'Năm'. |
SELECT DateDiff("q",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; |
Trả về chênh lệch giữa ngày hệ thống và "DateofSale" dưới dạng số 'Quý' (dựa trên năm tính toán) và hiển thị trong cột "DaysSinceSale". trả về chênh lệch giữa ngày hệ thống và "DateofSale" dưới dạng số 'Tháng' và hiển thị trong cột "DaysSinceSale". |
SELECT DateDiff("y",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; |
Trả về chênh lệch giữa ngày hệ thống và "DateofSale" dưới dạng số 'Ngày' và hiển thị trong cột "DaysSinceSale". |
SELECT DateDiff("d",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; |
Trả về chênh lệch giữa ngày hệ thống và "DateofSale" dưới dạng số 'Ngày' và hiển thị trong cột "DaysSinceSale". |
SELECT DateDiff("w",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; |
Trả về chênh lệch giữa ngày hệ thống và "DateofSale" dưới dạng số 'Các ngày trong tuần' và hiển thị trong cột "DaysSinceSale". Nếu "DateofSale" rơi vào thứ Hai, DateDiff sẽ đếm số Thứ Hai cho đến ngày hệ thống. Hàm này đếm ngày hệ thống nhưng không tính giá trị trong "DateofSale". |
SELECT DateDiff("ww",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; |
Trả về chênh lệch giữa ngày hệ thống và "DateofSale" dưới dạng số "Calender Weeks" và hiển thị trong cột "DaysSinceSale". Hàm đếm số chủ nhật tính từ "DateofSale" đến "ngày hệ thống". Nó sẽ đếm ngày hệ thống nếu nó rơi vào một chủ nhật; nhưng nó không được tính là "DateofSale", ngay cả khi nó rơi vào ngày Chủ Nhật. |
SELECT DateDiff("h",[DateTime],Date()) AS DaysSinceSale FROM ProductSales; |
Trả về chênh lệch giữa ngày hệ thống và "DateTime" dưới dạng số 'Giờ' và hiển thị trong cột "DaysSinceSale". |
SELECT DateDiff("n",[DateTime],Date()) AS DaysSinceSale FROM ProductSales; |
Trả về chênh lệch giữa ngày hệ thống và "DateTime" dưới dạng số 'Phút' và hiển thị trong cột "DaysSinceSale". |
SELECT DateDiff("s",[DateTime],Date()) AS DaysSinceSale FROM ProductSales; |
Trả về chênh lệch giữa ngày hệ thống và "DateTime" dưới dạng số 'giây' và hiển thị trong cột "DaysSinceSale". |
Biểu thức ví dụ
Sử dụng hàm DateDiff trong một biểu thức Bạn có thể sử dụng hàm DateDiff ở bất cứ nơi nào bạn có thể sử dụng biểu thức. Ví dụ: giả sử bạn có một biểu mẫu mà bạn sử dụng để thực hiện đơn đặt hàng của khách hàng. Trong bảng Đơn hàng, bạn có một trường có tên là ReceiveBefore chứa ngày mà khách hàng cần nhận đơn hàng. Bạn có thể sử dụng hàm DateDiff với một hộp văn bản trên biểu mẫu để hiển thị số ngày còn lại trước khi đơn hàng phải giao hàng.
Giả sử mất mười ngày để giao bất kỳ đơn hàng nào, bạn đặt thuộc tính Nguồn Điều khiển của hộp văn bản như sau:
=DateDiff("d", Now(), [Đơn_hàng].[ ReceiveBefore])-10
Khi bạn mở biểu mẫu ở dạng xem Biểu mẫu, hộp văn bản sẽ hiển thị số ngày còn lại trước khi đơn hàng phải được giao. Nếu còn ít hơn 10 ngày trước khi khách hàng cần nhận đơn hàng, số trong hộp văn bản là số âm và cho biết đơn hàng trễ bao nhiêu ngày nếu đơn hàng được giao ngay.
Ví dụ về VBA
Sử dụng hàm DateDiff trong mã VBA
Ví dụ này sử dụng hàm DateDiff để hiển thị số ngày tính từ ngày đã cho đến ngày hôm nay.
Dim TheDate As Date ' Declare variables.
Dim Msg TheDate = InputBox("Enter a date") Msg = "Days from today: " & DateDiff("d", Now, TheDate) MsgBox Msg