วันจันทร์ที่ 13 ตุลาคม พ.ศ. 2557

การแปลงรูปแบบวันที่ระหว่าง PHP กับ MySQL


วันที่และเวลาใน MySQL แตกต่างเล็กน้อย เวลาแสดงผลตามปกติแต่วันที่ของ MySQL ป้อนปีก่อน ตัวอย่าง 29th August 2000 สามารถป้อน เป็น 2000-08-09 หรือ 00-80-29 วันที่ดึงจาก MySQL อยู่ในลำดับตามนี้
เมื่อวางวันที่ MySQL จาก PHP สามารถวางได้ในรูปแบบถูกต้องด้วยการใช้ ฟังก์ชัน date ( ) ข้อระวังเล็กน้อยคือ ควรใช้เวอร์ชันของวันและเดือน ให้นำหน้าด้วยศูนย์เพื่อหลีกเลี่ยงความสับสนของ MySQL

ฟังก์ชัน DATE_FORMAT( )

ถ้าทำการแปลงใน MySQL สามารถใช้ฟังก์ชัน DATE_FORMAT ( ) และ UNIX_TIMESTAMP ฟังก์ชัน DATE_FORMAT ( ) ทำงานเหมือนกับ PHP แต่ใช้รหัสรูปแบบต่างกันถ้าต้องการรูปแบบวันที่เป็น MM-DD-YYYY แทนที่ รูปแบบปกติ ของ MySQL คือ YYYY-MM-DD การแปลงใช้ไวยากรณ์ คิวรี่ดังนี้
SELECT DATE_FORMAT(date_column, '%m%d%Y')
FOME tablename;

รหัส %m แสดงเดือนด้วยตัวเลข 2 ตำแหน่ง  %d แสดงวันด้วยตัวเลข 2 ตำแหน่ง และ %y แสดงมีด้วยตัวเลข 4 ตำแหน่ง ตาราง 3.3.5 แสดงรหัสรูปแบบ MySQL สำหรับวัตถุประสงค์นี้
ตาราง 3.3.5 รหัสรูปแบบสำหรับ ฟังก์ชัน DATE_FORMAT ( ) ของ MySQL
รหัสคำอธิบาย
%Mเดือน เป็นชื่อเต็ม
%Wชื่อวันในสัปดาห์ เป็นชื่อเต็ม
%Dวันของเดือน เป็นตัวเลขที่มีข้อความต่อท้าย (เช่น 1st )
%Yเดือน เป็นตัวเลข 4 ตำแหน่ง
%yเดือน เป็นตัวเลข 2 ตำแหน่ง
%aชื่อวันในสัปดาห์ เป็นชื่อย่อ 3 ตัวอักษร
%dวันของเดือนเป็นตัวเลขที่นำหน้าด้วยศูนย์
%eวันของเดือนเป็นตัวเลขที่ไม่นำหน้าด้วยศูนย์
%mเดือนเป็นตัวเลขที่นำหน้าด้วยศูนย์
%Eเดือนเป็นตัวเลขที่ไม่นำหน้าด้วยศูนย์
%bเดือนเป็นชื่อย่อ 3 ตัวอักษร
%jวันของปีเป็นตัวเลข
%Hชั่วโมงเป็นเวลา 24 ชั่วโมงที่นำหน้าด้วยศูนย์
%kชั่วโมงเป็นเวลา 24 ชั่วโมงที่ไม่นำหน้าด้วยศูนย์
%h หรือ %Iชั่วโมงเป็นเวลา 12 ชั่วโมงที่นำหน้าด้วยศูนย์
%lชั่วโมงเป็นเวลา 12 ชั่วโมงที่ไม่นำหน้าด้วยศูนย์
%iนาทีเป็นตัวเลขที่นำหน้าด้วยศูนย์
%Rเวลาในรูปแบบ 12 ชั่วโมง (hh:mm:ss [Am|Pm])
%Tเวลาในรูปแบบ 24 ชั่วโมง (hh:mm:ss)
%S หรือ %sวินาทีเป็นตัวเลขที่นำหน้าด้วยศูนย์
%PAM หรือ PM
%wวันของสัปดาห์เป็นตัวเลขจาก 0 (วันอาทิตย์) ถึง 6 (วันเสาร์)
ตัวอย่างการแสดงวันที่ใบสั่งซื้อ (orderdate) จากตารางข้อมูล Orders
SELECT DATE_FORMAT(orderdate, '%m%d%Y')
FOME orders;
ฟังก์ชัน UNIX_TIMESTAMP ทำงานคล้ายกัน แต่แปลงคอลัมน์เป็นเวลาประทับ Unix
SELECT UNIX_TIMESTAMP (date_column)
FROM tablename;
จะส่งออกรูปแบบวันที่เป็นเวลาประทับ Unix
ตัวอย่างการแสดงวันที่การปรับปรุงจากตารางเป็นเวลาประทับ Unix
SELECT DATE_FORMAT(lastupdate)
FOME loggedinusers;

ฟังก์ชัน STR_TO_DATE( )

ฟังก์ชัน STR_TO_DATE ทำหน้าที่แปลงวันที่ในรูปแบบข้อความจากฟังก์ชัน DATE_FORMAT() ให้กลับไปเป็นค่าของเวลา รหัสการแปลงใช้เหมือนกับฟังก์ชัน DATE_FORMAT() ตามตาราง 20.6
INSERT INTO orders(customerid, amount, orderdate)
VALUES (12, 825.50, STR_TO_DATE('%d.%m.%y', '20/08/06');

ไม่มีความคิดเห็น:

แสดงความคิดเห็น