วันที่ใน MySQL เป็น mm/dd/yyyy ทำไงให้เป็น yyyy-mm-dd
ทำได้หลายแบบ แต่เอาแค่ 2 แบบก็พอ
แบบข้อความ เราจะติ๊ต่างว่าวันที่ที่มีเป็นข้อความ (ซึ่งมันก็ดูเป็นข้อความอ่ะนะ) วิธีการคือจะตัดเอาส่วนต่าง ๆ ของวันที่ออกมา โดยเราจะใช้สตริงฟังก์ชัน (String Function) ซึ่งก็คือ
LEFT(), MID() และ
RIGHT() มาตัดชิ้นส่วนของวันที่ ตัวอย่างเราจะใช้วันที่เป็น '05/11/2009'
- ใช้ LEFT(string, length) ตัดเอาเดือนทางซ้ายออกมา ได้เป็น LEFT('05/11/2009', 2) ก็จะได้ 05 มา ข้อควรระวังคือถ้าเลขเดือนมันเป็นตัวเลขเดี่ยวก็ต้องลดจำนวนตัวอักษรที่จะตัดลง
- ใช้ MID(string, start_pos, length) ตัดวันที่ออกมา MID('05/11/2009', 4, 2) ได้ 11 อืม... ฉลาดจิง ๆ
- ต่อมาก็ตัดปีออกมาจากทางขวา RIGHT('05/11/2009', 4) ได้ 2009
- ตัดมาแล้วทำไงต่อ? ก็ต้องเอามารวมกันสิ เราจะใช้ CONCAT_WS(separator, string,..., string) มาเป็นตัวรวมข้อมูล จะได้ CONCAT_WS('-', RIGHT('05/11/2009', 4), LEFT('05/11/2009', 2), MID('05/11/2009', 4, 2)) แค่นี้ก็จะได้วันที่ในแบบที่เราต้องการแล้ว หึหึ ง่ายจิง จิง (เหรอวะเนี่ย -*-)
อีกวิธีคือ
แบบ Date เนื่องจากข้อความวันที่นั้นมันอยู่ในรูปแบบวันที่อยู่แล้ว แต่ข้อมูลเป็น String เราจึงมีฟังก์ชัน
STR_TO_DATE(date_str, format) ซึ่งสามารถจะแปลงข้อความให้เป็นตัวแปรแบบ Date ได้
ลองดู
STR_TO_DATE('05/11/2009', '%m/%d/%Y') .... แค่เนี๊ยะ ลอง
SELECT STR_TO_DATE('05/11/2009', '%m/%d/%Y') ก็จะได้ 2009-05-11 เลย....
ที่มา
http://sukorn.multiply.com/journal/item/81