MySQL에서 큰 int 또는 일반 int를 사용하여 타임 스탬프를 저장해야합니까?
-
19-09-2019 - |
문제
MySQL에서 큰 정수 나 일반 정수를 사용하여 기적을 저장해야합니까? 내장 타임 스탬프 나 DateTime이 아닌 int에 저장할 계획이므로 어떤 int 유형을 사용해야합니까?
해결책
int는 2038 년에 네거티브로 롤오버됩니다 (Unix 타임 스탬프를 사용하는 경우) : http://en.wikipedia.org/wiki/2038_problem.
너무 큰 것은 아마도 가장 안전한 선택 일 것입니다
다른 팁
DBMS가 타임 스탬프 데이터에 최적화 할 가능성이 높기 때문에 타임 스탬프에 저장해야합니다.
MySQL 개발자가 타임 스탬프를 만들기 위해 한 모든 노력을 희생하고 거의 작동하지 않는 무언가로 대체하는 이유에 대해 궁금합니다.
당신은 진술하지 않기 때문에 왜 당신은 정수를 사용하고 싶어합니다. 나는 그것이 일시적인 광기라고 가정하고 곧 회복 될 것이라고 가정 할 것입니다 :-)
나는 그것이 당신이하고 싶은 일에 전적으로 달려 있다고 생각합니다. 시간/날짜 유형을위한 몇 가지 적절한 유형이 있습니다 (참조 : 참조 : http://dev.mysql.com/doc/refman/55.0/en/date-andtime-type-overview.html)
DATE
- 일반적으로 3 바이트, 범위 :1000-01-01
에게9999-12-31
.DATETIME
- 8 바이트, 범위1000-01-01 00:00:00
에게9999-12-31 23:59:59
TIMESTAMP
-4 바이트 범위1970-01-01 00:00:01
UTC2038-01-19 03:14:07
UTC. 그런 다음 다음과 같은 의미 론적 문제가 있습니다.
(int는 타임 스탬프와 같은 4 바이트이며, 큰 링트는 dateTime과 같은 8 바이트입니다)
- 날짜 상점 캘린더 일, DateTime 및 Timestamp는 두 번째 정밀도로 저장 날짜+시간을 모두 두 번째 정밀도로 날짜 산술에서 지원되지만 스토리지 용으로는 지원되지 않음)
- 타임 스탬프는 UTC 값을 저장합니다. 즉, 당신이 붙어있는 값은 세션의 시간대 (기본적으로 서버의 시간대)에서 UTC로 변환되어 저장됩니다. 검색시 UTC 값은 세션에서 유효한 시간대로 다시 변환됩니다.
- 타임 스탬프는 삽입 또는 업데이트 또는 둘 다에서 현재 타임 스탬프를 자동으로 가져 오도록 선언 할 수 있습니다. 당신은 세부 사항에 대한 매뉴얼을 가장 잘 공부합니다 (참조 http://dev.mysql.com/doc/refman/5.1/en/timestamp.html)
제휴하지 않습니다 StackOverflow