หน้าแรกเข้าสู่ระบบเพื่อให้ความ
เห็นหรือสร้าง Blog ของคุณค้นหาตามเงื่อนไขDownload คู่มือการใช้งานติดต่อเรา

  เรื่อง วิธีการหลีกเลี่ยงความสับสนจากการจัดเก็บข้อมูลวันที่  
  สร้างโดย : panast  
  สร้างเมื่อ : 19 ตุลาคม 2555   เวลา 13:18 น.   แก้ไขล่าสุดเมื่อ : 19 ตุลาคม 2555   เวลา 13:24 น.      
  หมวดหมู่ : ด้านเทคโนโลยีสารสนเทศและการสื่อสาร  จำนวนผู้เข้าชม : 2519  
     
   
     
             หนึ่งในความสับสนเวลาที่ออกแบบฐานข้อมูลคือการกำหนด 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) : การจัดเก็บข้อมูลวันที่ ฐานข้อมูล เขียนโปรแกรม  
     
 
Rating : 3.71
 
     
 
ความเห็นที่ 1
 หากมีข้อสงสัยสอบถามได้ที่พนัสบดี กลุ่มฐานข้อมูลสารสนเทศ ศสท. ครับ
โดย panast (19 ตุลาคม 2555 13:36 น.)

ความเห็นที่ 2
 ขอบคุณสำหรับบทความที่มีประโยชน์ค่ะ
โดย rujirat (19 ตุลาคม 2555 13:38 น.)

ความเห็นที่ 3
 Thanks
โดย 25551025 (Err น.)

ความเห็นที่ 4
 ขอบคุณค่ะ
โดย Nutnicha (20 มกราคม 2556 17:04 น.)

ความเห็นที่ 5
 ขอบคุณสำหรับบทความดีๆ ค่ะ
โดย Kanokwan (20 มกราคม 2556 19:06 น.)

 
     
  ต้อง Login ก่อนจึงจะสามารถแสดงความคิดเห็นได้  
  เข้าหน้าหลักเพื่อสร้างบล็อกของคุณ (ต้อง Log In เข้าสู่ระบบก่อน)