บทความนี้ผู้เขียนขอเรียกเป็น “ซีรีย์คิวรี่ตามคำขอ” เพราะผู้เขียนได้รับการสอบถามถึงการสืบค้นวันสุดท้ายของเดือนปัจจุบัน ทั้งที่ Microsoft SQL Server นั้นมีฟังก์ชั่น EOMONTH (End of Month) มาตั้งแต่เวอร์ชั่น 2012 ตามลิ้งก์ต่อไปนี้ https://docs.microsoft.com/en-us/sql/t-sql/functions/eomonth-transact-sql?view=sql-server-2017
ฟังก์ชัน EOMONTH
มี Syntax ต่อไปนี้
|
โดย start_date คือวันใดก็ได้ในเดือนที่ต้องการหาวันสุดท้ายของเดือน และ month_to_add คือ เลขจำนวนเดือนที่ต้องการบวกเพิ่มให้แก่ start_date
สามารถทำความเข้าใจได้ผ่านตัวอย่างต่อไปนี้
|
ผลลัพธ์ที่ได้คือ (หมายเหตุ วันที่ทำการทดสอบคือ 29 มิถุนายน 2562)
|
ไม่ยากเลยใช่ไหมครับ แต่ผู้เขียนอดสงสัยไม่ได้ว่า Microsoft เตรียมฟังก์ชัน EOMONTH ไว้ให้ แต่ทำไมถึงไม่มี BOMONTH (Begin of Month) มาให้บ้าง ผู้เขียนมักสร้างฟังก์ชัน BOMONTH ขึ้นมาใช้งานและอยากจะนำมาแบ่งปันให้ใช้งานกัน
ฟังก์ชัน BOMONTH
แนวคิดง่ายมากครับ ผู้เขียนจะทำการลดจากวันที่ป้อนลงไปหนึ่งเดือน แล้วทำการหา EOMONTH จากวันดังกล่าวจากนั้นบวกวันเพิ่มไปอีก 1 วันก็จะกลายเป็นวันแรกของเดือนจากวันที่ป้อน ดังนี้
|
เรามาทดสอบฟังก์ชันที่เขียนขึ้นเองดังสคริปต์ต่อไปนี้
|
|
ผลลัพธ์ที่ได้ (หมายเหตุ วันที่ทำการทดสอบคือ 29 มิถุนายน 2562)
|
บทความนี้น่าจะเป็นประโยชน์สำหรับใครที่ต้องการหาวันแรกและวันสุดท้ายของเดือนผ่านฟังก์ชันของ Microsoft SQL Server แล้วผู้เขียนจะรอคำถามต่อไป แล้วนำมาเขียนคิวรี่ให้ดูกันครับ











