A-AA+then

การจัดการกับวันที่ที่มีรูปแบบต่างกัน

1,159
การจัดการกับวันที่ที่มีรูปแบบต่างกัน เราควรทำอย่างไรดีครับ

ตัวอย่าง ต้องการ Format Date ดังนี้ครับ Y-m-d , (2010-11-18)

แต่ข้อมูลที่จะนำเข้ามีลักษณะหลากหลายแบบมาก เช่น

2010-Nov-18
18/Nov/2010
18/11/2010
2010/11/18

ขอบคุณครับ

4 ความคิดเห็น

คงต้องเขียนคำสั่งเพื่อจัดการเองแล้วมั้งครับ ซึ่งน่าจะวุ่นวายเอาการ

2010-Nov-18
18/Nov/2010

2 รายการนี้อาจไม่ยากเท่าไร โดยใช้แนวคิดว่า 4 หลักคือ ปี 2 หลักคือ วันที่ และ ภาษาอ. คือ เดือน

18/11/2010
2010/11/18

2 อันนี้แหละ หิน สุดๆ เราไม่มีทางรู้เลยว่า อันไหนคือ วันที่ อันไหน คือเดือน (รับประกันได้ว่าในโลกนี้ไม่มีใครเขียนโปรแกรมแยกได้)
1

ขอบคุณมากครับอาจารย์ ลูกค้าดันส่งข้อมูลมาไม่เหมือนกันซักที่ 
2

    ทำได้แล้วครับ ลองดูนะครับ เผื่อมีท่านใดจำเป็นต้องใช้งานนะครับ 
    
    20-Dec-10
    select date_format(str_to_date('20-Dec-10 ', "%d-%b-%Y"), "%m/%d/%Y");
     
    26.08.2010
    SELECT  date_format(STR_TO_DATE('26.8.2010', '%d.%m.%Y'), "%m/%d/%Y");
     
    23082010 
    SELECT  date_format(STR_TO_DATE('23082010', '%d%m%Y'), "%m/%d/%Y");
     
    20100916
    SELECT  date_format(STR_TO_DATE('20100916', '%Y%m%d'), "%m/%d/%Y");
     
     23/09/2010 
    SELECT  date_format(STR_TO_DATE('23/09/2010', '%d/%m/%Y'), "%m/%d/%Y");
    
    2010-08-10
    date("Y-m-d",strtotime("2010-08-10"));
3

ปัญหายังตกอยู่ที่สองแบบตามที่คุณกรกดบอกนั่นแหละครับ คือ

ถ้าเป็น 20100101 จะใช้ฟังก์ชั่นไหน ระหว่าง (%Y%m%d) หรือ (%Y%d%m) และถ้าเป็น
01012010 จะใช้ฟังก์ชั่นไหน ระหว่าง (%d%m%Y) หรือ (%m%d%Y)

เพราะมีบางครั้งเหมือนกันที่ เดือนกับวันมักจะสลับที่กันอยู่ แต่พบน้อยหน่อยในไทย แต่บางประเทศใช้สลับกันกับบ้านเราจริงๆ
4
^