ฟังก์ชัน DateDiff

นำไปใช้กับ
Access for Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

ส่งกลับ ตัวแปร (ยาว) ที่ระบุจํานวนช่วงเวลาระหว่างวันที่สองวัน

ไวยากรณ์

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

ฟังก์ชัน DateDiff มีอาร์กิวเมนต์ดังนี้

อาร์กิวเมนต์ คำอธิบาย
interval จำเป็น นิพจน์สตริงที่เป็นช่วงของเวลาที่คุณใช้ในการคํานวณความแตกต่างระหว่าง date1 และdate2
date1, date2 จำเป็น ตัวแปร (วันที่) วันที่สองวันที่ที่คุณต้องการใช้ในการคํานวณ
firstdayofweek ไม่จำเป็น ค่าคงที่ที่ระบุวันแรกของสัปดาห์ ถ้าคุณไม่ได้ระบุไว้ จะถือว่าเป็นวันอาทิตย์
firstweekofyear ไม่จำเป็น ค่าคงที่ที่ระบุสัปดาห์แรกของปี ถ้าคุณไม่ได้ระบุไว้ สัปดาห์แรกคือสัปดาห์ที่มีวันที่ 1 มกราคมเกิดขึ้น

การตั้งค่า

อาร์กิวเมนต์ interval มีการตั้งค่าเหล่านี้:

การตั้งค่า คำอธิบาย
yyyy ปี
q ไตรมาส
m เดือน
y วันของปี
d วัน
w วันทำงาน
ww สัปดาห์
h ชั่วโมง
n นาที
s วินาที

อาร์กิวเมนต์ firstdayofweek มีการตั้งค่าเหล่านี้:

ค่าคงที่ ค่า คำอธิบาย
vbUseSystem 0 ใช้การตั้งค่า NLS API
vbSunday 1 วันอาทิตย์ (ค่าเริ่มต้น)
vbMonday 2 วันจันทร์
vbTuesday 3 วันอังคาร
vbWednesday 4 วันพุธ
vbThursday 5 วันพฤหัสบดี
vbFriday 6 วันศุกร์
vbSaturday 7 วันเสาร์
ค่าคงที่ ค่า คำอธิบาย
vbUseSystem 0 ใช้การตั้งค่า NLS API
vbFirstJan1 1 เริ่มต้นด้วยสัปดาห์ที่มีวันที่ 1 มกราคม (ค่าเริ่มต้น)
vbFirstFourDays 2 เริ่มต้นด้วยสัปดาห์แรกที่มีอย่างน้อยสี่วันในปีใหม่
vbFirstFullWeek 3 เริ่มต้นด้วยสัปดาห์แรกของปีเต็ม

ข้อสังเกต

คุณสามารถใช้ DateDiff ฟังก์ชันเพื่อกําหนดจํานวนช่วงเวลาที่ระบุที่มีอยู่ระหว่างวันที่สองวันที่ ตัวอย่างเช่น คุณอาจใช้ DateDiff เพื่อคํานวณจํานวนวันระหว่างวันที่สองวันหรือจํานวนสัปดาห์ระหว่างวันนี้และสิ้นปี

เมื่อต้องการคํานวณจํานวนวันระหว่าง date1 และ date2คุณสามารถใช้ วันของปี ("y") หรือ วัน ("d") อย่างใดอย่างหนึ่งได้ เมื่อ interval เป็นวันทํางาน ("w") จะ DateDiff ส่งกลับจํานวนสัปดาห์ระหว่างวันที่สองวัน ถ้าdate1อยู่ในวันจันทร์ จะDateDiffนับจํานวนวันจันทร์จนถึงdate2 date2นับแต่ไม่ใช่date1 อย่างไรก็ตาม DateDiff ถ้าintervalเป็นสัปดาห์ ("ww") ฟังก์ชันจะส่งกลับจํานวนสัปดาห์ในปฏิทินระหว่างวันที่สองวัน โดยนับจํานวนวันอาทิตย์ระหว่าง date1 และdate2 DateDiff นับ date2 เป็นวันอาทิตย์ แต่ไม่นับ date1ถึงแม้จะอยู่ในวันอาทิตย์ก็ตาม

ถ้าdate1อ้างอิงไปยังจุดdate2DateDiffเวลาหลังจาก ฟังก์ชันจะส่งกลับจํานวนลบ

อาร์กิวเมนต์firstdayofweekมีผลต่อการคํานวณที่ใช้สัญลักษณ์และ"w""ww"ช่วง

ถ้า date1 หรือ date2 เป็นวันที่ตามตัวอักษร ปีที่ระบุจะกลายเป็นส่วนถาวรของวันที่นั้น อย่างไรก็ตาม ถ้าdate1หรือdate2อยู่ในเครื่องหมายอัญประกาศคู่ (" ") และคุณละปี ปีปัจจุบันจะถูกแทรกลงในโค้ดของคุณทุกครั้งที่date1ประเมินนิพจน์ หรือdate2 ซึ่งทําให้สามารถเขียนโค้ดที่คุณสามารถใช้ในปีที่แตกต่างกันได้

เมื่อคุณเปรียบเทียบวันที่ 31 ธันวาคมกับวันที่ 1 มกราคมของปี DateDiff ถัดไป สําหรับปี ("yyyy") จะส่งกลับค่า 1 แม้ว่าจะผ่านไปแล้วเพียงหนึ่งวันก็ตาม

หมายเหตุ

สําหรับ date1 และ date2ถ้า Calendar การตั้งค่าคุณสมบัติเป็น เกรโกเรียน วันที่ที่ให้ต้องเป็นเกรโกเรียน ถ้าปฏิทินเป็นฮิจเราะห์ วันที่ที่ระบุต้องเป็นฮิจเราะห์

ตัวอย่างคิวรี DateDiff

นิพจน์ ผลลัพธ์
SELECT DateDiff("yyyy",#01/01/2010#,[DateofSale]) AS Expr1 FROM ProductSales; ส่งกลับค่าผลต่างในปีระหว่างวันที่ 01/01/2010 และค่าใน DateofSale เขตข้อมูล
SELECT DateDiff("q",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; ส่งกลับผลต่างในไตรมาสตามปีปฏิทิน ระหว่างวันที่ของระบบ และ DateofSaleและแสดงใน DaysSinceSale คอลัมน์
SELECT DateDiff("y",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; ส่งกลับค่าความแตกต่างเป็นวันระหว่างวันที่ระบบ และ DateofSaleและแสดงใน DaysSinceSale คอลัมน์
SELECT DateDiff("d",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; ส่งกลับค่าความแตกต่างเป็นวันระหว่างวันที่ระบบ และ DateofSaleและแสดงใน DaysSinceSale คอลัมน์
SELECT DateDiff("w",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; ส่งกลับค่าความแตกต่างในวันทํางานระหว่างวันที่ของระบบและ DateofSaleและแสดงใน DaysSinceSale คอลัมน์ ถ้า DateofSale อยู่ในวันจันทร์ จะ DateDiff นับจํานวนวันจันทร์จนถึงวันที่ของระบบ โดยนับวันที่ของระบบแต่ไม่นับค่าDateofSale
SELECT DateDiff("ww",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; ส่งกลับค่าความแตกต่างในสัปดาห์ปฏิทิน ระหว่างวันที่ของระบบ และ DateofSaleและแสดงใน DaysSinceSale คอลัมน์ โดยนับจํานวนวันอาทิตย์ระหว่าง DateofSale และวันที่ของระบบ โดยนับวันที่ของระบบถ้าตรงกับวันอาทิตย์ แต่ไม่นับ DateofSaleถึง แม้จะตรงกับวันอาทิตย์ก็ตาม
SELECT DateDiff("h",[DateTime],Date()) AS DaysSinceSale FROM ProductSales; ส่งกลับผลต่างเป็นชั่วโมงระหว่างวันที่ของระบบ และ DateTimeและแสดงใน DaysSinceSale คอลัมน์
SELECT DateDiff("n",[DateTime],Date()) AS DaysSinceSale FROM ProductSales; ส่งกลับผลต่างเป็นนาทีระหว่างวันที่ของระบบ และ DateTimeและแสดงใน DaysSinceSale คอลัมน์
SELECT DateDiff("s",[DateTime],Date()) AS DaysSinceSale FROM ProductSales; ส่งกลับค่าความแตกต่างเป็นวินาทีระหว่างวันที่ของระบบและ DateTimeและแสดงใน DaysSinceSale คอลัมน์

ใช้ฟังก์ชัน DateDiff ในนิพจน์

คุณสามารถใช้ฟังก์ชันได้ DateDiff ทุกที่ที่คุณสามารถใช้นิพจน์ ตัวอย่างเช่น สมมติว่าคุณมีแบบฟอร์มที่คุณใช้ในการตอบสนองใบสั่งซื้อของลูกค้า ในตารางใบสั่งซื้อ คุณจะมีเขตข้อมูลที่ชื่อ ReceiveBefore ซึ่งมีวันที่ที่ลูกค้าต้องได้รับคําสั่งซื้อ คุณสามารถใช้ DateDiff ฟังก์ชันที่มีกล่องข้อความบนแบบฟอร์ม เพื่อแสดงจํานวนวันที่เหลือก่อนที่ใบสั่งต้องจัดส่งสินค้า

ถ้าจะใช้เวลาสิบวันในการจัดส่งคําสั่งซื้อใดๆ ให้ตั้งค่าคุณสมบัติ แหล่งตัวควบคุม ของกล่องข้อความดังนี้:

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

เมื่อคุณเปิดฟอร์ม ในมุมมองฟอร์ม กล่องข้อความจะแสดงจํานวนวันที่เหลือก่อนที่คําสั่งซื้อจะต้องจัดส่ง ถ้าเหลือเวลาน้อยกว่า 10 วันก่อนที่ลูกค้าจะต้องได้รับคําสั่งซื้อ ตัวเลขในกล่องข้อความจะเป็นค่าลบ ซึ่งระบุว่าจะส่งคําสั่งซื้อล่าช้ากี่วันหากคุณจัดส่งทันที

ใช้ฟังก์ชัน DateDiff ในโค้ด VBA

ตัวอย่างนี้ใช้ DateDiff ฟังก์ชันเพื่อแสดงจํานวนวันระหว่างวันที่ที่ระบุและวันนี้

Dim TheDate As Date  ' Declare variables.
Dim Msg
TheDate = InputBox("Enter a date")
Msg = "Days from today: " & DateDiff("d", Now, TheDate)
MsgBox Msg

ดูเพิ่มเติม

การเลือกฟังก์ชันวันที่ที่ถูกต้อง