MySQL การใช้งานฟังก์ชัน FROM_DAYS()

ฟังก์ชัน FROM_DAYS() ใช้เพื่อแปลงค่าจำนวนวัน (จำนวนเต็ม) เป็นวันที่ (DATE) โดยถือว่าเริ่มนับจากวันที่ '0000-01-01' มีความสามารถเฉพาะตัวในการแปลงค่าจำนวนวัน (days) เป็นวันที่ (DATE) ซึ่งเหมาะกับการใช้งานเกี่ยวกับวันที่ที่คำนวณจากค่าตัวเลข เช่น การแปลงจำนวนวันที่นับจากปี ค.ศ. 0 (Julian Day) ให้เป็นวันจริง

ประโยชน์ของฟังก์ชัน FROM_DAYS()

  1. แปลงค่าจำนวนวัน (จาก TO_DAYS()) กลับมาเป็นวันที่จริง
  2. ใช้คำนวณอายุโดยใช้ DATEDIFF() แล้วแปลงกลับเป็นปี
  3. ใช้สร้างวันที่จากค่าที่เก็บเป็นจำนวนวันในระบบเก่า
  4. เหมาะกับการคำนวณย้อนหลังจากค่าเลขวัน

รูปแบบการใช้งาน

FROM_DAYS(days)
  • days คือค่าจำนวนวัน (ชนิดข้อมูล INT) ที่ต้องการแปลงเป็น DATE

ตัวอย่างการใช้งาน

แปลงจำนวนวันเป็นวันที่

SQL
SELECT FROM_DAYS(738935) AS converted_date;
-- ผลลัพธ์: 2023-02-19
  • ตัวเลข 738935 คือนับวันตั้งแต่ปี 0 ตรงกับ 19 กุมภาพันธ์ 2023

ใช้ร่วมกับ TO_DAYS()

SQL
SELECT FROM_DAYS(TO_DAYS('2025-04-10')) AS back_to_date;
-- ผลลัพธ์: 2025-04-10

คำนวณอายุแบบประมาณ (จากวันเกิด)

SQL
SELECT FLOOR(DATEDIFF(CURDATE(), birth_date) / 365) AS approx_age
FROM members;

หรือแบบเปลี่ยนเป็น DATE แล้วแยก YEAR

SQL
SELECT YEAR(FROM_DAYS(DATEDIFF(CURDATE(), birth_date))) AS age_years
FROM members;
แชร์เรื่องนี้