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

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

ไวยากรณ์

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

ดูเพิ่มเติม

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

ต้องการความช่วยเหลือเพิ่มเติมหรือไม่

ต้องการตัวเลือกเพิ่มเติมหรือไม่

สํารวจสิทธิประโยชน์ของการสมัครใช้งาน เรียกดูหลักสูตรการฝึกอบรม เรียนรู้วิธีการรักษาความปลอดภัยอุปกรณ์ของคุณ และอื่นๆ