ตัวอย่างการประยุกต์ใช้งานฟังก์ชัน 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 นั้น
นอกจากเราสามารถหาวันที่ไปข้างหน้าได้แล้ว เรายังสามารถหาวันที่ย้อนหลังได้อีกด้วยค่ะ
อย่างไรลองนำไปประยุกต์ใช้กับงานในชิวิตจริงกันดูนะคะ




