|
|
|
อยากทราบวิธีเก็บข้อมูลเป็นตัวอักษรจากวันที่ในฐานข้อมูลครับ |
|
|
|
|
|
|
|
ทำไมไม่เก็บเป็น datetime ปกติหละครับ แล้วเวลาแสดงผลค่อยนำ ค่า datetime มาแปลงเป็น format ที่เราต้องการอีกทีนึง
Code (PHP)
$date = '2013-03-13 00:00:00'; //สมมติเป็นค่า datetime ที่ ได้จากการ query
$date = date('j/n/Y',strtotime($date)); //แปลงให้อยู่ในรูปแบบ วัน/เดือน/ปี
$date = explode('/',$date); //แยก วัน เดือน ปี เก็บเป็น array
$date[2] += 543; //แปลงเป็นปีไทย
$date = implode('/',$date); //รวมกลับเข้ามาเป็น string ใน รูปแบบ วัน/เดือน/ปี อีกครั้งครับ
ปล ถ้าต้องการลดขั้นตอนในการแปลงปี พ.ศ.ไทย เวลา insert ก็ให้ +INTERVAL 543 YEAR ไปเลยครับ
จะทำให้ตัดขั้นตอนบรรทัดที่ 5 - 9 ออกไปปได้เลย
Code (SQL)
INSERT INTO `table` SET `datefield` = CURDATE() + INTERVAL 543 YEAR
|
ประวัติการแก้ไข 2013-03-13 11:59:39 2013-03-13 12:01:49
|
|
|
|
Date :
2013-03-13 11:57:36 |
By :
pmmaster |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
เพิ่มเติมนิดนีงครับ จิงๆ แล้ว การ + INTERVAL 543 YEAR ต้องระวังนิดนึงครับ
เพราะหาก server เราเป็นแบบ 32 bit มันจะอ้าง เวลาสูงสุดได้แค่ 19 Jan 2038 03:14:07 UTC
ดังนั้น function strtotime() จะแปลงค่า timestamp ผิดพลาด ดังนั้น วิธีการแปลงแบบเป็นปีไทย แบบที่ผมแสดงให้ดูจึงน่าจะเป็นทางออกที่ควรเลือกที่สุดครับ
ป.ล. ถ้า server เป็นแบบ 64 bit สามารถลัดแบบนี้ได้ครับ
Code (PHP)
$date = '2013-03-13 00:00:00'; //สมมติเป็นค่า datetime ที่ ได้จากการ query
$date = date('j/n/Y',strtotime($date.' + 543 year')); //แปลงให้อยู่ในรูปแบบ วัน/เดือน/ปี
หรือถ้าเรา insert แบบ +INTERVAL 543 year
ก็จะลดเหลือแค่
Code (PHP)
$date = '2556-03-13 00:00:00'; //สมมติเป็นค่า datetime ที่ ได้จากการ query
$date = date('j/n/Y',strtotime($date)); //แปลงให้อยู่ในรูปแบบ วัน/เดือน/ปี
|
ประวัติการแก้ไข 2013-03-13 12:18:42 2013-03-13 12:25:48
|
|
|
|
Date :
2013-03-13 12:17:07 |
By :
pmmaster |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ขอบคุณมากครับ
|
|
|
|
|
Date :
2013-03-13 12:37:02 |
By :
Beowulf325 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 00
|