ความแตกต่างระหว่างรูปแบบวันที่ / เวลาที่แตกต่างกันใน ActiveRecord นั้นมีส่วนเกี่ยวข้องกับ Rails และทุกอย่างเกี่ยวกับฐานข้อมูลที่คุณใช้อยู่
ใช้ MySQL เป็นตัวอย่าง (ถ้าไม่มีเหตุผลอื่น ๆ เพราะมันเป็นที่นิยมมากที่สุด) คุณมีDATE
, DATETIME
, TIME
และTIMESTAMP
ชนิดข้อมูลคอลัมน์; เช่นเดียวกับที่คุณมีCHAR
, VARCHAR
, และFLOAT
INTEGER
ดังนั้นคุณถามอะไรคือความแตกต่าง บางคนอธิบายตนเองได้ DATE
เก็บเฉพาะวันที่TIME
เท่านั้นเก็บช่วงเวลาของวันในขณะที่จัดDATETIME
เก็บทั้งสอง
ความแตกต่างระหว่างDATETIME
และTIMESTAMP
เป็นบิตที่ลึกซึ้งยิ่งขึ้น: มีรูปแบบเป็นDATETIME
YYYY-MM-DD HH:MM:SS
ช่วงที่ถูกต้องเริ่มจากปี 1,000 ถึงปี 9999 (และทุกอย่างในขณะที่TIMESTAMP
ดูเหมือนว่าเมื่อคุณดึงมันออกมาจากฐานข้อมูลมันเป็นเพียงด้านหน้าสำหรับการประทับเวลายูนิกซ์ช่วงที่ถูกต้องของมันไปจาก 1970 ถึง 2038 ที่นี่นอกเหนือจากฟังก์ชั่นในตัวที่หลากหลายภายในเอ็นจิ้นฐานข้อมูลคือพื้นที่เก็บข้อมูลเนื่องจากDATETIME
เก็บทุกหลักในปีเดือนวันชั่วโมงนาทีและวินาทีมันจึงใช้ทั้งหมด 8 ไบต์TIMESTAMP
เพียงเก็บตัวเลข วินาทีตั้งแต่ 1970-01-01 มันใช้ 4 ไบต์
คุณสามารถอ่านเพิ่มเติมเกี่ยวกับความแตกต่างระหว่างรูปแบบในเวลาของ MySQL ที่นี่
ในที่สุดมันก็ลงมาที่สิ่งที่คุณต้องการคอลัมน์วันที่ / เวลาของคุณที่จะทำ คุณต้องการจัดเก็บวันที่และเวลาก่อนปี 1970 หรือหลังปี 2038 หรือไม่? DATETIME
ใช้ คุณจำเป็นต้องกังวลเกี่ยวกับขนาดฐานข้อมูลและคุณอยู่ภายในช่วงเวลานั้นหรือไม่? TIMESTAMP
ใช้ คุณต้องการเก็บวันที่หรือไม่? DATE
ใช้ คุณต้องการเก็บเวลาหรือไม่? TIME
ใช้
มีกล่าวทั้งหมดนี้Rails จริงทำให้บางส่วนของการตัดสินใจเหล่านี้สำหรับคุณ ทั้ง:timestamp
และ:datetime
จะเริ่มต้นDATETIME
ในขณะที่:date
และ:time
สอดคล้องกับDATE
และTIME
ตามลำดับ
ซึ่งหมายความว่าภายใน Rails คุณต้องตัดสินใจว่าจะต้องเก็บวันที่เวลาหรือทั้งสองอย่าง