|
เรื่อง
วิธีการหลีกเลี่ยงความสับสนจากการจัดเก็บข้อมูลวันที่
|
|
|
สร้างโดย :
panast
|
|
|
สร้างเมื่อ :
19 ตุลาคม 2555   เวลา 13:18 น.
แก้ไขล่าสุดเมื่อ :
19 ตุลาคม 2555   เวลา 13:24 น.
|
|
|
หมวดหมู่ :
ด้านเทคโนโลยีสารสนเทศและการสื่อสาร
จำนวนผู้เข้าชม :
2576
|
|
|
|
|
|
|
|
|
|
|
|
           หนึ่งในความสับสนเวลาที่ออกแบบฐานข้อมูลคือการกำหนด field สำหรับจัดเก็บข้อมูลประเภทที่เป็นวันที่ โดยโปรแกรมฐานข้อมูลทั่วไปจะมีชนิดข้อมูลที่เรียกว่า date/time ให้เลือกใช้ แต่บ่อยครั้งที่เราจะพบว่าข้อมูลที่ฐานข้อมูลเก็บเอาไว้ หรือผลลัพธ์ที่ได้จากการเรียกค้นข้อมูลไม่ตรงกับสิ่งที่เราต้องการจริง ๆ
ทั้งนี้เนื่องจากเรามักจะคุ้นเคยกับรูปแบบวันที่เป็น วันที่/เดือน/ปี ในขณะที่ระบบคอมพิวเตอร์ที่ใช้อาจจะกำหนดให้แสดงค่าวันที่เป็น วัน/เดือน/ปี หรือ เดือน/วัน/ปี ก็ได้ ขึ้นอยู่กับวิธีการตั้งค่า ทำให้ไม่สามารถแน่ใจว่าค่า 1/2/2012 หมายถึงวันที่ 1 เดือนกุมภาพันธ์ 2012 หรือวันที่ 2 เดือนมกราคม 2012 กันแน่ จนกว่าจะมีการตรวจสอบ
           นอกจากนี้ข้อมูลส่วนที่เป็นค่าปีก็อาจจะก็ให้เกิดความสับสนเช่นกัน โดยในบางกรณี ระบบจะเก็บข้อมูลเป็นปีค.ศ. แต่เวลาแสดงผล มันจะแสดงผลโดยการแปลงให้เป็นปีพ.ศ. ให้โดยอัตโนมัติ
ปัญหานี้จะยิ่งยุ่งยากมากขึ้น หากเราจำเป็นต้องนำฐานข้อมูลไปใช้กับเครื่องคอมพิวเตอร์เครื่องอื่น หรือในกรณีที่มีการย้ายฐานข้อมูลไปยัง database server ตัวใหม่ซึ่งอาจจะตั้งระบบวันที่ต่างจากเครื่องเดิม ทำให้ในบางกรณี อาจจะจำเป็นต้องแก้ไข source code ของโปรแกรมเพื่อให้เข้ากับระบบวันที่ของเครื่องใหม่
ดังนั้น วิธีหนึ่งที่สามารถใช้แก้ปัญหานี้ได้ก็คือการจัดเก็บข้อมูลวันที่โดยใช้ชนิดข้อมูลเป็นข้อความ (text/string/varchar - ขึ้นอยู่กับโปรแกรมที่ใช้) ขนาด 8 ตัวอักษร โดยเก็บข้อมูลในรูปแบบ YYYYMMDD นั่นคือ อักษรตัวที่ 1 - 4 ใช้เก็บปี (พ.ศ. หรือ ค.ศ. - ขึ้นอยู่กับความต้องการของผู้ออกแบบฐานข้อมูล) อักษรตัวที่ 5 - 6 ใช้เก็บค่าเดือน (ตั้งแต่ 01 - 12) และอักษรตัวที่ 4 - 8 ใช้เก็บค่าวันที่ (ตั้งแต่ 01 - 31) เช่น หากต้องการเก็บค่าวันที่ 10 เมษายน 2555 ก็ให้เก็บข้อมูลว่า 25550410 ในกรณีที่ต้องการเก็บข้อมูลแบบปีพ.ศ. หรือ 20120410 ในกรณีที่ต้องการเก็บข้อมูลแบบปีค.ศ.
หากต้องการเรียกข้อมูลมาใช้งาน ก็ให้ใช้ฟังก์ชั่นในการตัดตัวอักษร เช่น substring, left, right, mid (ขึ้นกับภาษาที่ใช้เขียน) เพื่อแบ่งข้อความขนาด 8 ตัวอักษรนั้นออกเป็น 4 ตัวแรก, 2 ตัวกลาง และ 2 ตัวหลัง นั่นก็คือ ปี เดือน และวัน ตามลำดับ
           ทั้งนี้ ในการใช้ข้อมูลชนิดข้อความขนาด 8 ตัวอักษรแทนข้อมูลชนิด date/time จะไม่มีปัญหาในการ query ข้อมูลโดยสั่งให้เรียงลำดับตามวันที่ เนื่องจากเรากำหนดให้เก็บข้อมูลในรูปแบบ YYYYMMDD ซึ่งจะมีลำดับการเรียงเหมือนกับลำดับของวันที่อยู่แล้ว
|
|
|
|
|
|
|
|
|
คำสำคัญ (Keyword) :
การจัดเก็บข้อมูลวันที่ ฐานข้อมูล เขียนโปรแกรม
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
เข้าหน้าหลักเพื่อสร้างบล็อกของคุณ
(ต้อง Log In เข้าสู่ระบบก่อน)
|
|