ส่งกลับ ตัวแปร (ยาว) ที่ระบุจํานวนของช่วงเวลาระหว่างวันที่สองวัน
ไวยากรณ์
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 อย่างไรก็ตาม ถ้า interval เป็น Week ()"ww" ฟังก์ชันจะ DateDiff ส่งกลับจํานวนสัปดาห์ปฏิทินระหว่างวันที่สองวัน มันนับจํานวนวันอาทิตย์ระหว่าง date1 และdate2
DateDiff นับถ้า date2 ตรงกับวันอาทิตย์ แต่ไม่นับ date1แม้ว่าจะตรงกับวันอาทิตย์ก็ตาม
ถ้า date1 อ้างอิงไปยังช่วงเวลา date2หลัง ฟังก์ชันจะ DateDiff ส่งกลับจํานวนลบ
อาร์กิวเมนต์มีผล firstdayofweek ต่อการคํานวณที่ใช้สัญลักษณ์ And "w""ww" Interval
ถ้า date1 หรือ date2 เป็นสัญพจน์วันที่ ปีที่ระบุจะกลายเป็นส่วนหนึ่งของวันที่อย่างถาวร อย่างไรก็ตาม ถ้า date1 or date2 ถูกล้อมรอบด้วยเครื่องหมายอัญประกาศคู่ ()" " และคุณละปี ปีปัจจุบันจะถูกแทรกลงในโค้ดของคุณทุกครั้งที่ date1 นิพจน์ OR date2 ถูกประเมิน ซึ่งทําให้สามารถเขียนรหัสที่คุณสามารถใช้ในปีต่างๆ ได้
เมื่อคุณเปรียบเทียบวันที่ 31 ธันวาคม กับ 1 มกราคมของปีถัดไป DateDiff สําหรับปี ("yyyy") จะส่งกลับ 1 แม้ว่าจะผ่านไปเพียงหนึ่งวัน
หมายเหตุ
For date1 and ถ้า 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