ส่งกลับ ตัวแปร (ยาว) ที่ระบุจํานวนช่วงเวลาระหว่างวันที่สองวัน
ไวยากรณ์
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