Hàm DateDiff

Áp dụng cho
Access cho Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Trả về Biến_thể (Dài) xác định số khoảng thời gian giữa hai ngày.

Cú pháp

DateDiff(interval, date1, date2[, firstdayofweek][, firstweekofyear])

Hàm DateDiff có các đối số sau:

Đối số Mô tả
interval Bắt buộc. Biểu thức chuỗi là khoảng thời gian mà bạn sử dụng để tính toán chênh lệch giữa date1 và .date2
date1, date2 Bắt buộc. Biến_thể (Ngày). Hai ngày mà bạn muốn sử dụng để tính toán.
firstdayofweek Không bắt buộc. Hằng số xác định ngày đầu tiên của tuần. Nếu bạn không xác định tên, sẽ giả định là Chủ Nhật.
firstweekofyear Không bắt buộc. Một hằng số xác định tuần đầu tiên của năm. Nếu bạn không xác định rõ ngày 1 tháng Một, tuần đầu tiên là tuần có ngày 01 Tháng Một.

Cài đặt

Đối interval số 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
s Giây

Đối firstdayofweek số có các thiết đặt sau:

Hằng số Giá trị Mô tả
vbUseSystem 0 Sử dụng cài đặt NLS API.
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 NLS API.
vbFirstJan1 1 Bắt đầu với tuần có ngày 01 Tháng Một (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 đầu tiên trong năm.

Chú thích

Bạn có thể dùng hàm này 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 để 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 date1 và , date2bạn có thể dùng Ngày trong năm ()"y" hoặc Ngày ("d"). When interval là Weekday (),"w"DateDiff trả về số tuần giữa hai ngày. Nếu date1 rơi vào thứ Hai, sẽ DateDiff đếm số ngày Thứ Hai cho đến ngày date2. Nó đếm date2 nhưng không .date1 Tuy nhiên, nếu interval là Week (),"ww" hàm trả DateDiff về số tuần dương lịch giữa hai ngày. Nó đếm số Chủ nhật giữa date1 và .date2 DateDiff đếm nếu date2 nó rơi vào Chủ nhật, nhưng nó không được tính date1, ngay cả khi nó rơi vào Chủ nhật.

Nếu date1 tham chiếu tới một thời điểm muộn hơn , date2hàm trả DateDiff về số âm.

Đối firstdayofweek số ảnh hưởng đến các phép tính sử dụng "w" biểu tượng và "ww" khoảng thời gian.

Nếu date1 hoặc date2 là ký tự ngày, 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ỏ qua năm, năm hiện tại sẽ được chèn vào mã của bạn mỗi khi biểu date1 thức or date2 được đánh giá. Điều này giúp bạn có thể viết mã mà bạn có thể sử dụng trong các năm khác nhau.

Khi bạn so sánh ngày 31 tháng 12 với ngày 1 tháng 1 của năm sau, DateDiff vì Year ()"yyyy" trả về 1 mặc dù chỉ có một ngày trôi qua.

Lưu ý

Đối với date1 và date2, nếu Calendar thiết đặt thuộc tính là Dương lịch, ngày được cung cấp phải là Dương lịch. Nếu lịch là lịch Hijri, ngày đượ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ề khoảng cách tính bằng năm giữa ngày và 01/01/2010 giá trị trong DateofSale trường.
SELECT DateDiff("q",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; Trả về mức chênh lệnh, tính bằng quý dựa trên năm dương lịch, giữa ngày hệ thống và , DateofSalevà hiển thị trong DaysSinceSale cột.
SELECT DateDiff("y",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; Trả về chênh lệnh, tính bằng ngày, giữa ngày hệ thống và DateofSale, và hiển thị trong cột DaysSinceSale .
SELECT DateDiff("d",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; Trả về chênh lệnh, tính bằng ngày, giữa ngày hệ thống và DateofSale, và hiển thị trong cột DaysSinceSale .
SELECT DateDiff("w",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; Trả về chênh lệnh, tính bằng các ngày trong tuần, giữa ngày hệ thống và , DateofSalevà hiển thị trong cột DaysSinceSale . Nếu DateofSale rơi vào thứ Hai, sẽ DateDiff đếm số ngày Thứ Hai cho đến ngày hệ thống. Nó đếm ngày hệ thống nhưng không tính giá DateofSale trị.
SELECT DateDiff("ww",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; Trả về khoảng cách tính bằng các tuần dương lịch giữa ngày hệ thống và , DateofSalevà hiển thị trong cột DaysSinceSale . Nó đếm số Chủ Nhật giữa ngày DateofSale hệ thống. Nó đếm ngày của hệ thống nếu nó rơi vào ngày Chủ nhật, nhưng nó không tính 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ệnh, tính bằng giờ, giữa ngày hệ thống và , DateTimevà hiển thị trong DaysSinceSale cột.
SELECT DateDiff("n",[DateTime],Date()) AS DaysSinceSale FROM ProductSales; Trả về khoảng cách theo phút giữa ngày hệ thống và , DateTimevà hiển thị trong cột DaysSinceSale .
SELECT DateDiff("s",[DateTime],Date()) AS DaysSinceSale FROM ProductSales; Trả về chênh lệnh, tính bằng giây, giữa ngày hệ thống và , DateTimevà hiển thị trong cột DaysSinceSale .

Sử dụng hàm DateDiff trong biểu thức

Bạn có thể sử dụng hàm bất DateDiff kỳ 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 hàng của khách hàng. Trong bảng Đơn hàng, bạn có một trường được đặt tên có ReceiveBefore chứa ngày mà khách hàng cần nhận được đơn hàng. Bạn có thể sử dụng hàm này DateDiff cùng 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 được giao.

Giả sử sẽ mất mười ngày để giao bất kỳ đơn hàng nào, hãy đặt thuộc tính Nguồn Điều khiển của hộp văn bản như sau:

=DateDiff("d", Now(), [Orders].[ReceiveBefore])-10

Khi bạn mở biểu mẫu trong 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 được đơn hàng, số trong hộp văn bản sẽ là số âm. Thông báo này cho biết đơn hàng sẽ trễ bao nhiêu ngày nếu bạn giao hàng ngay lập tức.

Sử dụng hàm DateDiff trong mã VBA

Ví dụ này dùng DateDiff hàm để hiển thị số ngày giữa ngày đã cho và 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

Xem Thêm

Chọn hàm ngày đúng