PHP ระดับสูง > วันที่และเวลา
การแปลงรูปแบบวันที่ระหว่าง 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 |
วินาทีเป็นตัวเลขที่นำหน้าด้วยศูนย์ |
%P |
AM หรือ 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');
|