ส่งกลับ ตัวแปร (ยาว) ที่ระบุจำนวนของช่วงเวลาระหว่างวันที่สองวันที่ระบุ
ไวยากรณ์
DateDiff (ช่วง, วันที่ 1, วันที่ 2 [, วันแรกของสัปดาห์] [, สัปดาห์แรกของปี] )
ไวยากรณ์ของฟังก์ชัน DateDiff มีอาร์กิวเมนต์ดังนี้
| อาร์กิวเมนต์ | คำอธิบาย |
|---|---|
| ช่วงเวลา | จำเป็น นิพจน์สตริงที่เป็นช่วงของเวลาที่คุณใช้ในการคํานวณความแตกต่างระหว่างวันที่ 1 และวันที่ 2 |
| วันที่ 1, วันที่ 2 | จำเป็น ตัวแปร (วันที่) วันที่สองวันที่คุณต้องการใช้ในการคํานวณ |
| วันแรกของสัปดาห์ | ไม่จำเป็น ค่าคงที่ที่ระบุวันแรกของสัปดาห์ ถ้าไม่ระบุ จะถือว่าเป็นวันอาทิตย์ |
| สัปดาห์แรกของปี | ไม่จำเป็น ค่าคงที่ที่ระบุสัปดาห์แรกของปี ถ้าไม่ได้ระบุไว้ จะถือว่าสัปดาห์แรกเป็นสัปดาห์ที่มีวันที่ 1 มกราคม |
การตั้งค่า
อาร์กิวเมนต์ ช่วงเวลา มีการตั้งค่าเหล่านี้:
| การตั้งค่า | คำอธิบาย |
|---|---|
| yyyy | ปี |
| q | ไตรมาส |
| m | เดือน |
| y | วันของปี |
| d | วัน |
| w | วันทำงาน |
| ww | สัปดาห์ |
| h | ชั่วโมง |
| n | นาที |
| s | วินาที |
อาร์กิวเมนต์ วันแรกของสัปดาห์ มีการตั้งค่าเหล่านี้:
| ค่าคงที่ | ค่า | คำอธิบาย |
|---|---|---|
| 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 เพื่อคํานวณจํานวนวันระหว่างวันที่สองวัน หรือจํานวนสัปดาห์ระหว่างวันนี้และสิ้นปี
เมื่อต้องการคํานวณจํานวนวันระหว่าง วันที่ 1 และ วันที่ 2 คุณสามารถใช้ วันของปี ("y") หรือ วัน ("d") เมื่อ interval คือ Weekday ("w") DateDiff จะส่งกลับจํานวนสัปดาห์ระหว่างวันที่สองวัน ถ้า date1 ตรงกับวันจันทร์ DateDiff จะนับจํานวนวันจันทร์จนถึงวันที่ 2 นับวันที่ 2 แต่ไม่ใช่วันที่ 1 ถ้า interval เป็น Week ("ww") อย่างไรก็ตาม ฟังก์ชัน DateDiff จะส่งกลับจํานวนสัปดาห์ในปฏิทินระหว่างวันที่สองวัน โดยนับจํานวนวันอาทิตย์ระหว่างวันที่ 1 และวันที่ 2 DateDiff จะนับ วันที่ 2 ถ้าอยู่ในวันอาทิตย์ แต่จะไม่นับ วันที่ 1 แม้ว่าจะเป็นวันอาทิตย์ก็ตาม
ถ้า date1 อ้างอิงไปยังจุดหลังจากเวลานอกเหนือจาก วันที่ 2 ฟังก์ชัน DateDiff จะส่งกลับค่าจํานวนลบ
อาร์กิวเมนต์ วันแรกของสัปดาห์ มีผลต่อการคํานวณที่ใช้สัญลักษณ์ช่วงเวลา "w" และ "ww"
ถ้า date1 หรือ date2 เป็นวันที่ตามตัวอักษร ปีที่ระบุจะกลายเป็นส่วนถาวรของวันที่นั้น อย่างไรก็ตาม ถ้า date1 หรือ date2 อยู่ในเครื่องหมายอัญประกาศคู่ (" ") และคุณละเว้นปี ปีปัจจุบันจะถูกแทรกลงในโค้ดของคุณทุกครั้งที่นิพจน์ date1 หรือ date2 ถูกประเมิน สิ่งนี้ทําให้สามารถเขียนรหัสที่สามารถใช้ในปีที่แตกต่างกันได้
เมื่อเปรียบเทียบวันที่ 31 ธันวาคมถึง 1 มกราคมของปีถัดไปทันที DateDiff for Year ("yyyy") จะส่งกลับค่า 1 แม้ว่าจะผ่านไปเพียงวันเดียว
หมายเหตุ
สําหรับวันที่ 1 และวันที่ 2 ถ้าการตั้งค่าคุณสมบัติ Calendar เป็นคริสต์ศักดิก ถ้าปฏิทินเป็นฮิจเราะห์ วันที่ที่ระบุต้องเป็นฮิจเราะห์
ตัวอย่างคิวรี DateDiff
| นิพจน์ | ผลลัพธ์ |
|---|---|
| SELECT DateDiff("yyyy",#01/01/2010#,[DateofSale]) AS Expr1 FROM ProductSales; | ส่งกลับผลต่างระหว่าง Date2 และ Date1 (พิจารณา Date1 เป็นเก่าที่สุด และ Date2 เป็นค่าใหม่ที่สุด) เป็นจํานวน 'ปี' ผลลัพธ์: ผลต่างระหว่างค่าในเขตข้อมูล "DateofSale" และวันที่ "01/01/2010" เป็นจํานวน 'ปี' |
| SELECT DateDiff("q",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; | ส่งกลับผลต่างระหว่างวันที่ของระบบและ "DateofSale" เป็นจํานวน 'ไตรมาส' (ตามปีปฏิทิน) และแสดงในคอลัมน์ "DaysSinceSale" ส่งกลับค่าความแตกต่างระหว่างวันที่ของระบบและ "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" และ "system date" ซึ่งจะนับวันที่ของระบบถ้าตรงกับวันอาทิตย์ แต่จะไม่นับ "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