การเข้าใจรหัสวันที่ yy
กับ rr
ใน Oracle SQL
เมื่อทำงานกับรูปแบบวันที่ใน Oracle SQL คำถามที่มักเกิดขึ้นคือ: ความแตกต่างระหว่างรหัสวันที่ yy
และ rr
ของ Oracle คืออะไร? การเข้าใจความแตกต่างนี้สามารถส่งผลกระทบอย่างมากต่อผลลัพธ์ที่ถูกส่งคืนโดยคำสั่งของคุณ โดยเฉพาะเมื่อทำงานกับรูปแบบปีสองหลัก มาแบ่งรหัสวันที่เหล่านี้ออกและชี้แจงว่าทำไมมันจึงสร้างผลลัพธ์ที่แตกต่างกัน
ปัญหาที่อธิบาย
ใน Oracle SQL เมื่อทำการจัดการหรือเปรียบเทียบวันที่ อาจมีกรณีที่คุณต้องแปลงสตริงให้เป็นรูปแบบวันที่ รหัสวันที่ yy
และ rr
มักใช้สำหรับวัตถุประสงค์นี้
นี่คือตัวอย่างสองตัวอย่างที่แสดงให้เห็นถึงความแตกต่างของพวกมัน:
SELECT ename FROM emp WHERE hiredate = TO_DATE('01/05/81', 'dd/mm/yy');
SELECT ename FROM emp WHERE hiredate = TO_DATE('01/05/81', 'dd/mm/rr');
เมื่อดำเนินการแล้ว คำสั่ง SQL ทั้งสองนี้อาจส่งคืนผลลัพธ์ที่แตกต่างกันขึ้นอยู่กับการตีความปี “81”
การแบ่งรหัสวันที่ออก
รหัสวันที่ yy
- การนิยาม: รหัส
yy
อนุญาตให้คุณป้อนปีสองหลัก - การตีความ: Oracle จะสันนิษฐานโดยอัตโนมัติว่าหมายเลขสองหลักนั้นเกี่ยวข้องกับศตวรรษปัจจุบัน
- ตัวอย่างเช่น หากปีปัจจุบันคือ 2023 วันที่เช่น
01/05/81
จะถูกตีความว่าเป็นปี2081
- ตัวอย่างเช่น หากปีปัจจุบันคือ 2023 วันที่เช่น
- กรณีการใช้งาน: นี่อาจทำให้เกิดผลลัพธ์ที่ไม่คาดคิดโดยเฉพาะสำหรับวันที่ที่อ้างถึงศตวรรษที่ 20
รหัสวันที่ rr
- การนิยาม: รหัส
rr
ยังรับปีสองหลักแต่ใช้วิธีการที่แตกต่างในการตีความ - การตีความ: ปีสองหลักจะถูกปัดเศษเพื่อกำหนดปีเต็ม:
- 50-99: ถือว่าเป็นปี
1950-1999
- 00-49: ถือว่าเป็นปี
2000-2049
- 50-99: ถือว่าเป็นปี
- ตัวอย่าง: ดังนั้น
01/05/81
จะถูกตีความว่าเป็นปี1981
ซึ่งมักจะเป็นการอ้างอิงที่ตั้งใจในกรณีส่วนใหญ่
สรุปตัวอย่าง
นี่คือการสรุปว่าเหล่ารหัสเหล่านี้ส่งผลกระทบต่อผลลัพธ์อย่างไร:
- คำสั่งที่ใช้
yy
:- สันนิษฐานว่า
01/05/81
เป็น2081
ซึ่งน่าจะไม่มีการจ้างงานที่สอดคล้องกัน
- สันนิษฐานว่า
- คำสั่งที่ใช้
rr
:- มองเห็นวันที่เดียวกันว่าเป็น
1981
ซึ่งคาดว่าจะมีบันทึกการจ้างงานในตารางemp
- มองเห็นวันที่เดียวกันว่าเป็น
บทสรุป
การเข้าใจ ความแตกต่างระหว่าง yy
และ rr
เป็นสิ่งสำคัญเมื่อเขียนคำสั่ง SQL ของ Oracle ที่เกี่ยวข้องกับวันที่ ขณะที่ yy
อาจนำไปสู่การตีความปีในอนาคตได้ไม่ถูกต้อง รหัส rr
จัดให้มีวิธีที่เหมาะสมกว่าในการแปลงปีสองหลักด้วยกฎการปัดเศษของมัน
การเลือกใช้รหัสที่เหมาะสมสามารถช่วยให้คุณหลีกเลี่ยงการรวมข้อมูลโดยไม่ตั้งใจและรับรองว่าคำสั่ง SQL ของคุณให้ผลลัพธ์ตามที่ตั้งใจ สำหรับกรณีส่วนใหญ่ที่เกี่ยวข้องกับข้อมูลในอดีต รหัส rr
แนะนำให้ใช้เพื่อความชัดเจนและความถูกต้อง
ต้องแน่ใจว่าคุณได้พิจารณาบริบทของข้อมูลและปีปัจจุบันเมื่อทำงานกับปีสองหลักเพื่อหลีกเลี่ยงข้อผิดพลาดและการตีความที่ผิดพลาด