ActiveRecord의 서로 다른 날짜 / 시간 형식의 차이는 Rails와 거의 관련이 없으며 사용중인 데이터베이스와 관련이 있습니다.
(만약 그것이 가장 인기 때문에 다른 이유로) 예로 MySQL을 사용하여, 당신은 DATE
, DATETIME
, TIME
및 TIMESTAMP
열 데이터 유형; 당신이 가지고있는 것과 같이 CHAR
, VARCHAR
, FLOAT
와 INTEGER
.
차이점이 무엇인지 물어보십시오. 글쎄, 그들 중 일부는 설명이 필요합니다. DATE
날짜 TIME
만 저장하고 시간 만 저장하며DATETIME
둘 다 저장합니다.
의 차이 DATETIME
와는 TIMESTAMP
좀 더 미묘하다 : DATETIME
로 포맷됩니다 YYYY-MM-DD HH:MM:SS
. 유효한 범위는 1000 년에서 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 내에서 날짜, 시간 또는 둘 다를 저장할지 여부 만 결정하면됩니다.