ตัวอย่างการประยุกต์ใช้งานฟังก์ชัน DateAdd
OrderID | Customer | InvoiceDate | CreditTerm | DueDate |
10248 | Wilman Kala | 15/7/2560 | 15 | 30/7/2560 |
10249 | Tradição Hipermercados | 15/7/2560 | 20 | 4/8/2560 |
10250 | Hanari Carnes | 15/7/2560 | 25 | 9/8/2560 |
10251 | Victuailles en stock | 15/7/2560 | 30 | 14/8/2560 |
10252 | Suprêmes délices | 15/7/2560 | 60 | 13/9/2560 |
10253 | Hanari Carnes | 15/7/2560 | 90 | 13/10/2560 |
ซึ่งคอลัมน์ DueDate เป็นคอลัมภ์ที่เป็นผลลัพธ์จากฟังก์ชัน DateAdd ค่ะ
ฟิลด์ InvoiceDate นั้น เป็นวันที่วางใบแจ้งหนี้
ฟิลด์ CreditTerm นั้น เป็นจำนวนวันที่ให้เครดิตลูกค้า
ส่วนกำหนดชำระเงิน หรือ DueDate นั้น คือ
วันที่ลูกค้าต้องชำระเงิน หลังจากวันที่วางใบแจ้งหนี้ตามจำนวนวันที่ให้เครดิตลูกค้า
เช่น CreditTerm 5 วัน InvoiceDate 15/7/2560 duedate จะเป็นวันที่ 20/7/2560
ซึ่ง Syntax ของ DateAdd คือ DateAdd(interval, number, date)
โดย Interval หมายถึง ช่วงเวลา เช่น
ถ้าคำนวณเวลา 30 นาที จากเดี๋ยวนี้ Interval จะเป็น “n”
DateAdd ( “n”, 30, 15/07/2560 15:00) คืนค่า เป็น 15/07/2560 15:30
ถ้าคำนวณวัน 10 วัน นับจากวันนี้ Interval จะเป็น “d”
DateAdd ( “d”, 10, 15/7/2560) คืนค่า เป็น 25/7/2560
ทั้งนี้จะสังเกตได้ว่า n หรือ d นั้น จะเป็น String Expression จึงต้องอยู่ภายใต้เครื่องหมาย “
ส่วนจะทราบได้อย่างไร ว่า เมื่อใดจะใช้ n เมื่อใดจะใช้ d นั้น สามารถดูได้เพิ่มเติมนั้น
สามารถดูได้ตามตารางข้างล่างนี้ค่ะ
ทั้งนี้ อ้างอิงจาก https://support.office.com/th-th/article/ฟังก์ชัน-DateAdd-63befdf6-1ffa-4357-9424-61e8c57afc19 ค่ะ
การตั้งค่า | คำอธิบาย |
---|---|
yyyy | ปี |
q | ไตรมาส |
m | เดือน |
y | วันของปี |
d | วัน |
w | วันทำงาน |
ww | สัปดาห์ |
h | ชั่วโมง |
n | นาที |
s | วินาที |
เมื่อทราบวิธีการใช้งานฟังก์ชัน DueDate กันแล้ว กลับมาที่การหา Duedate กันค่ะ
จาก Syntax : DateAdd ( interval, number, date )
ดังนั้น DueDate = DateAdd ( “d”, [CreditTerm], [InvoiceDate])
จากตัวอย่างข้างต้นจะเห็นว่า number เป็นตัวเลขบวก
ซึ่งในความเป็นจริงแล้ว number นั้นสามารถเป็นตัวเลขติดลบได้
ลองพิจารณาตัวอย่างนี้ดูค่ะ
หากเราต้องการทราบรายการลูกค้าได้หมดอายุมาแล้วไม่เกิน 30 วัน ทั้งนี้เราจะ Criteria ข้อมูลอย่างไรดี
จากข้อมูลดังตารางก่อนที่จะ Criteria นั้น CurrentDate คือ วันที่ปัจจุบัน
เมื่อพิจารณาที่ ExpireDate จะพบว่า มีทั้งกรณี
1.หมดอายุเกิน 30 วันไปแล้ว
2.หมดอายุไม่เกิน 30 วัน ซึ่งเราต้องการกรณีนี้ โดยถ้าเรา Criteria จะได้ผลลัพธ์ดัง Record ที่เป็นสีเหลือง
3.ยังไม่หมดอายุ
Customer ID | Company Name | ExpireDate | CurrentDate |
---|---|---|---|
ALFKI | Alfreds Futterkiste | 3/7/2560 | 30/7/2560 |
ANATR | Ana Trujillo Emparedados y helados | 5/6/2560 | 30/7/2560 |
ANTON | Antonio Moreno Taquería | 31/10/2560 | 30/7/2560 |
AROUT | Around the Horn | 20/7/2560 | 30/7/2560 |
BERGS | Berglunds snabbköp | 30/7/2560 | 30/7/2560 |
BLAUS | Blauer See Delikatessen | 31/12/2560 | 30/7/2560 |
BLONP | Blondel père et fils | 31/3/2561 | 30/7/2560 |
กรณีที่ต้องการเฉพาะ ExpireDate ที่หมดอายุมาแล้วไม่เกิน 30 วัน แสดงว่า
เราต้องการช่วงข้อมูล ตั้งแต่วันที่นับย้อนหลังไป 30 วันนับจากวันนี้ นั่นก็คือ
DateAdd("d",-30,Date()) ถึงวันที่ปัจจุบัน ก็คือ Date()
ดังนั้น คำสั่งที่ใช้ Criteria ที่ฟิลด์ ExpireDate คือ
Between DateAdd("d",-30,Date()) And Date()
ลองดูที่ Design View ของ Query นี้กัน
ผลลัพธ์ที่ได้
Customer ID | Company Name | ExpireDate | CurrentDate |
---|---|---|---|
ALFKI | Alfreds Futterkiste | 3/7/2560 | 30/7/2560 |
AROUT | Around the Horn | 20/7/2560 | 30/7/2560 |
BERGS | Berglunds snabbköp | 30/7/2560 | 30/7/2560 |
จากทั้ง 2 ตัวอย่างที่ผ่านมา จะเห็นได้ว่า การใช้ฟังก์ชัน DateAdd นั้น
นอกจากเราสามารถหาวันที่ไปข้างหน้าได้แล้ว เรายังสามารถหาวันที่ย้อนหลังได้อีกด้วยค่ะ
อย่างไรลองนำไปประยุกต์ใช้กับงานในชิวิตจริงกันดูนะคะ