ความแตกต่างระหว่างรูปแบบวันที่ / เวลาที่แตกต่างกันใน ActiveRecord นั้นมีส่วนเกี่ยวข้องกับ Rails และทุกอย่างเกี่ยวกับฐานข้อมูลที่คุณใช้อยู่
ใช้ MySQL เป็นตัวอย่าง (ถ้าไม่มีเหตุผลอื่น ๆ เพราะมันเป็นที่นิยมมากที่สุด) คุณมีDATE, DATETIME, TIMEและTIMESTAMPชนิดข้อมูลคอลัมน์; เช่นเดียวกับที่คุณมีCHAR, VARCHAR, และFLOATINTEGER
ดังนั้นคุณถามอะไรคือความแตกต่าง บางคนอธิบายตนเองได้ 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 คุณต้องตัดสินใจว่าจะต้องเก็บวันที่เวลาหรือทั้งสองอย่าง