SQL Server:DATETIME และ DATETIME2

Byphunsanit

SQL Server:DATETIME และ DATETIME2

จากปัญหาที่เจอตอนที่เขียนเรื่อง DBeaver: Export Data Formatting เพราะว่า database ตัวหนึ่งใช้ datetime อีกตารางใช้ datetime2 ข้อสังเกตทีเจอคือ เวลา datetime2 จะมีเลขอีก 3 ตัวเกินขึ้นมา โดยเป็น type ที่เริ่มมีใน SQL Server 2008 ครับ (เลขเวอร์ชันหลักคือ 10.0)

🕰️ การทำความเข้าใจความแตกต่างระหว่างชนิดข้อมูล datetime และ datetime2 ใน SQL Server นั้นมีความสำคัญในการจัดการข้อมูลวันที่และเวลาได้อย่างเหมาะสม นี่คือข้อแตกต่างหลัก ๆ

DATA TYPEDATETIMEDATETIME2
ช่วงวันที่ที่รองรับ1753-01-01 ถึง 9999-12-310001-01-01 ถึง 9999-12-31
ความละเอียด (Fractional Seconds)ความละเอียด 3 ตำแหน่ง (วินาทีส่วนย่อย) โดยจะปัดเศษไปที่ .000, .003, หรือ .007 วินาทีเท่านั้นความละเอียด 7 ตำแหน่ง (วินาทีส่วนย่อย) ปรับแต่งได้ตั้งแต่ 0 ถึง 7 (เช่น datetime2(3), datetime2(7))
พื้นที่เก็บข้อมูล8 ไบต์ (คงที่)6 ถึง 8 ไบต์ (ขึ้นอยู่กับความละเอียดที่กำหนด)
ความแม่นยำต่ำกว่า เนื่องจากมีการปัดเศษวินาทีส่วนย่อยสูงกว่า และแม่นยำกว่า เพราะรองรับความละเอียดได้ถึง 7 ตำแหน่ง
การใช้มาตรฐานเป็นชนิดข้อมูลดั้งเดิมของ SQL Serverสอดคล้องกับมาตรฐาน SQL Standard และความแม่นยำของ .NET Framework มากกว่า
สรุปเข้ากับระบบเก่าดีกว่า

รายละเอียดเพิ่มเติม

  • ช่วงวันที่ที่กว้างขึ้น: datetime2 สามารถเก็บวันที่ได้ตั้งแต่ปี ค.ศ. 1 ในขณะที่ datetime เริ่มต้นที่ปี 1753
  • ความแม่นยำของเวลา: datetime2 มีความสามารถในการกำหนดความละเอียด (Precision) ของวินาทีส่วนย่อยได้ (เช่น datetime2(3) สำหรับมิลลิวินาที) ทำให้ datetime2 เหมาะสมกว่าสำหรับการใช้งานที่ต้องการความแม่นยำสูง
  • พื้นที่เก็บข้อมูลที่ประหยัดกว่า: สำหรับความละเอียดที่ต่ำกว่า 7 ตำแหน่ง (เช่น datetime2(0) ถึง datetime2(4) จะใช้เพียง 6 หรือ 7 ไบต์) datetime2 สามารถใช้พื้นที่เก็บข้อมูลได้น้อยกว่า datetime ที่ใช้ 8 ไบต์เสมอ
  • การปัดเศษของ datetime: เป็นจุดที่ควรระวังอย่างยิ่ง เนื่องจาก datetime จะปัดเศษวินาทีส่วนย่อยไปยังค่าที่ใกล้ที่สุดของ 0, 3, หรือ 7 มิลลิวินาทีเสมอ (เช่น ...:45.345 จะถูกเก็บเป็น ...:45.347)

💡 สรุปการเลือกใช้

โดยทั่วไปแล้ว ควรใช้ชนิดข้อมูล datetime2 แทน datetime เนื่องจาก:

  1. มีความแม่นยำสูงกว่า และไม่มีปัญหาเรื่องการปัดเศษของวินาทีส่วนย่อย
  2. มีช่วงวันที่ที่กว้างกว่า
  3. สอดคล้องกับมาตรฐาน SQL และมีความยืดหยุ่นในการใช้พื้นที่เก็บข้อมูลมากกว่า

อ่านเพิ่มเติม

About the author

phunsanit administrator