ส่งกลับ ตัวแปร (ยาว) ที่ระบุจำนวนของช่วงเวลาระหว่างวันที่สองวันที่ระบุ
ไวยากรณ์
DateDiff ( interval, date1, date2 [, firstdayofweek] [, firstweekofyear] )
ไวยากรณ์ของฟังก์ชัน 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 และวันที่ 2DateDiff จะนับ วันที่ 2 ถ้าอยู่ในวันอาทิตย์ แต่จะไม่นับ วันที่ 1 แม้ว่าจะเป็นวันอาทิตย์ก็ตาม
ถ้า date1 อ้างอิงไปยังจุดหลังจากเวลานอกเหนือจาก วันที่ 2 ฟังก์ชัน DateDiff จะส่งกลับค่าจํานวนลบ
อาร์กิวเมนต์ วันแรกของสัปดาห์ มีผลต่อการคํานวณที่ใช้สัญลักษณ์ช่วงเวลา "w" และ "ww"
ถ้า date1 หรือ date2 เป็นวันที่ตามตัวอักษร ปีที่ระบุจะกลายเป็นส่วนถาวรของวันที่นั้น อย่างไรก็ตาม ถ้า date1 หรือ date2 อยู่ในเครื่องหมายอัญประกาศคู่ (" ") และคุณละเว้นปี ปีปัจจุบันจะถูกแทรกลงในโค้ดของคุณทุกครั้งที่นิพจน์ date1 หรือ date2 ถูกประเมิน สิ่งนี้ทําให้สามารถเขียนรหัสที่สามารถใช้ในปีที่แตกต่างกันได้
เมื่อเปรียบเทียบวันที่ 31 ธันวาคมถึง 1 มกราคมของปีถัดไปทันที DateDiff for Year ("yyyy") จะส่งกลับค่า 1 แม้ว่าจะผ่านไปเพียงวันเดียว
หมายเหตุ: สําหรับ วันที่ 1 และ วันที่ 2 ถ้าการตั้งค่าคุณสมบัติ ปฏิทิน เป็นคริสต์ศักดิก วันที่ที่ระบุต้องเป็นคริสต์ศักดิก ถ้าปฏิทินเป็นฮิจเราะห์ วันที่ที่ระบุต้องเป็นฮิจเราะห์
ตัวอย่างคิวรี DateDiff
|
Expression |
ผลลัพธ์ |
|---|---|
|
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