บทนำ: การแปลงสตริง PHP เป็น Timestamp ใน MySQL

หากคุณเคยทำงานกับวันที่ใน PHP และ MySQL คุณอาจเคยพบกับความท้าทายในการแปลงระหว่างรูปแบบวันที่ที่แตกต่างกัน โดยเฉพาะอย่างยิ่ง หากคุณมีสตริง PHP ที่จัดรูปแบบเป็น YYYY-DD-MM และคุณต้องการเปรียบเทียบกับ Timestamp ที่เก็บอยู่ใน MySQL งานนี้อาจดูยากในตอนแรก นักพัฒนาหลายคนพบว่าตนเองสงสัยว่า “มีวิธีที่มีประสิทธิภาพในการทำการแปลงเหล่านี้หรือไม่?” ในโพสต์บล็อกนี้เราจะสำรวจวิธีการที่มีประสิทธิภาพในการแปลงระหว่างสองรูปแบบนี้ ทำให้การเปรียบเทียบและการจัดการข้อมูลของคุณง่ายขึ้นมาก

การเข้าใจรูปแบบ

ก่อนที่จะลงมือกับวิธีการแปลง มาชี้แจงรูปแบบที่เกี่ยวข้องกัน:

  • รูปแบบสตริง PHP: YYYY-DD-MM (เช่น 2023-25-10 หมายถึง 25 ตุลาคม 2023)
  • Timestamp ใน MySQL: โดยปกติจะแสดงในรูปแบบ YYYY-MM-DD HH:MM:SS (เช่น 2023-10-25 00:00:00) หรือเป็น UNIX Timestamp

ความจำเป็นในการแปลงเกิดขึ้นโดยเฉพาะเมื่อคุณจัดเก็บวันที่หรือทำการเปรียบเทียบในคำสั่งสอบถามฐานข้อมูล

การแปลงจาก Timestamp ใน MySQL เป็นสตริง PHP

หากคุณเริ่มต้นด้วย Timestamp ใน MySQL และต้องการแปลงเป็นสตริง PHP ในรูปแบบ YYYY-DD-MM คุณสามารถทำได้อย่างง่ายดายโดยใช้ฟังก์ชัน date ใน PHP

ขั้นตอนในการแปลง

  1. ดึงข้อมูล Timestamp ของคุณ: ตรวจสอบให้แน่ใจว่าคุณมี Timestamp ของ MySQL ที่สามารถเข้าถึงได้ในโค้ด PHP ของคุณ
  2. ใช้ฟังก์ชัน date:
    $formattedDate = date('Y-d-m', $timestamp);
    
    ที่นี่, $timestamp คือ ตัวแปร Timestamp ของ MySQL ที่กำลังถูกแปลง

ตัวอย่าง

$timestamp = strtotime('2023-10-25 00:00:00'); // Timestamp ตัวอย่าง
$formattedDate = date('Y-d-m', $timestamp); // ผลลัพธ์: 2023-25-10

การแปลงจากสตริง PHP เป็น Timestamp ใน MySQL

ในทางกลับกัน หากคุณมีสตริงในรูปแบบ YYYY-DD-MM และต้องการแปลงเป็น Timestamp ที่สามารถเก็บใน MySQL ได้ คุณจะใช้ฟังก์ชัน mktime

ขั้นตอนในการแปลง

  1. แยกสตริงวันที่ของคุณ: แยกสตริงออกเป็นส่วนประกอบ (ปี, วัน, เดือน)
  2. ใช้ฟังก์ชัน mktime:
    $timestamp = mktime(0, 0, 0, $month, $day, $year, $is_dst);
    
    • ที่นี่, $month, $day, และ $year ต้องถูกดึงออกมาจากสตริง PHP ของคุณ

ตัวอย่าง

$dateString = '2023-25-10'; // สตริงวันที่ตัวอย่าง
list($year, $day, $month) = explode('-', $dateString); // แยกสตริง
$timestamp = mktime(0, 0, 0, $month, $day, $year); // สร้าง Timestamp

Timestamp นี้สามารถเก็บหรือเปรียบเทียบกับข้อมูลใด ๆ ใน MySQL ได้

การเก็บวันที่ใน MySQL: ตัวเลือกของคุณ

เมื่อพูดถึงการเก็บวันที่ใน MySQL คุณมีหลายตัวเลือก:

  • รูปแบบ DATE ของ MySQL: เก็บวันที่โดยตรงในรูปแบบวันที่
  • UNIX Timestamp: เก็บเป็นจำนวนเต็มที่แสดงถึงจำนวนวินาทีตั้งแต่วันที่ 1 มกราคม 1970
  • TIMESTAMP ของ MySQL: รูปแบบที่หลากหลายที่สามารถแปลง Timestamp ตัวเลขเป็นรูปแบบวันที่ที่อ่านได้โดยอัตโนมัติ

สำหรับการอ่านเพิ่มเติมเกี่ยวกับฟังก์ชันวันที่และเวลาของ MySQL คุณสามารถเยี่ยมชม เอกสาร MySQL เพื่อข้อมูลเพิ่มเติมเกี่ยวกับการเลือกใช้รูปแบบที่เหมาะสมสำหรับความต้องการของแอปพลิเคชันของคุณ

สรุป

การนำทางการแปลงระหว่างสตริง PHP ในรูปแบบ YYYY-DD-MM และ Timestamp ใน MySQL ไม่จำเป็นต้องเป็นเรื่องที่ท้าทาย ด้วยวิธีการที่ชัดเจนที่ระบุไว้ในโพสต์นี้ คุณสามารถทำการแปลงและดำเนินการเปรียบเทียบวันที่ในแอปพลิเคชันของคุณได้อย่างง่ายดาย โปรดจำไว้ว่าสิ่งสำคัญคือการเลือกใช้รูปแบบที่เหมาะสมในการจัดเก็บวันที่ใน MySQL ตามความต้องการของแอปพลิเคชันของคุณ ขอให้สนุกกับการเขียนโค้ด!