Data Engineering

ฟังก์ชันวันเวลาที่น่าสนใจใน MySQL

เช่น การหาอายุจากวันเกิด หาจำนวนในเดือนปัจจุบัน

การคำนวณอายุจากวันเกิด

วิธีการคำนวณนั้น สามารถทำได้จาก 2 วิธีการ คือ

แบบที่ 1: คำนวณจากปี ค.ศ. โดยทำการลบปีปัจจุบันกับปีเกิด

SELECT (YEAR(NOW())-YEAR('1982-02-01'))

ผลลัพธ์ที่ได้คือ อายุที่เป็นตัวเลขจำนวนเต็ม

แบบที่ 2: คำนวณจาก วันเดือนปี ค.ศ.

SELECT DATEDIFF(CURRENT_DATE, STR_TO_DATE('1982-02-01', '%Y-%m-%d'))/365

ผลลัพธ์ที่ได้คือ ตัวจำนวนเต็มที่มีจุดทศนิยม (เพราะถูกหารด้วยจำนวน 365 วัน)

การหาจำนวนวัน ในเดือนปัจจุบัน

รูปแบบ Syntax:

SELECT DAY(LAST_DAY(CURDATE())) as 'num day';

อธิบาย:

  • ใช้ฟังก์ชัน DAY() เพื่อดึงเฉพาะวันที่
  • ใช้ฟังก์ชัน LAST_DAY() เพื่อหาวันสุดท้าย
  • ใช้ฟังก์ชัน CURDATE() เพื่อหา ปี-เดือน-วัน ณ ปัจจุบัน
  • ภาษาคน คือ เลือกวันที่ ของ วันสุดท้าย ของ วันปัจจุบัน

ตัวอย่าง:

ถ้าวันนี้เป็นวันที่ 2019-01-02 ผลลัพธ์การ query จะได้ค่า 31 เพราะเดือนมกราคมมี 31 วัน

การหาวันหยุด เสาร์ อาทิตย์

กรณีที่คุณต้องการหาว่าวันที่เลือกเป็นวันอะไร หรือวันไหนเป็นวันเสาร์ (หรือวันต่างๆที่ต้องการ) สามารถใช้ฟังก์ชัน DAYOFWEEK() ได้เลยครับ

กรณีตัวอย่าง: ต้องการทราบว่า วันที่ 1 มกราคม 2563 เป็นวันอะไร สามารถใช้คำสั่ง..

SELECT DAYOFWEEK("2020-01-01");  # ผลลัพธ์ คือ 4

ผลที่ได้ คือ 4 นั่นคือ วันพุธ โดย 1 จะเริ่มจากวันอาทิตย์ และวันสุดท้ายของสัปดาห์ คือวันเสาร์ ซึ่งก็คือ 7

กรณีตัวอย่าง: ต้องการหาว่า วันไหนบ้างในฐานข้อมูลที่เป็นวันเสาร์ , อาทิตย์
สามารถใช้คำสั่ง..

SELECT date_purchase FROM purchase_order
WHERE DAYOFWEEK(date_purchase) IN (7,1);

อธิบาย :

  • date_purchase คือ ชื่อ field ในตาราง purchase_order
  • หาวันที่ของ date_purchase ที่มีค่า Date of Week เป็น 7 และ 1 ซึ่ง 7 คือวันเสาร์ และ 1 คือวันอาทิตย์
Tags