2012-07-27 3 views
0

많은 MySQL 데이터베이스 테이블에서 int UNSIGNED 필드에 타임 스탬프 (php time())를 저장했습니다. 그러나 time()은 올바르게 호출 할 경우 13 자리 값을 반환하고 INT UNSIGNED 값은 2147483647까지만 저장할 수 있으며 최대 길이는 10 자리입니다. 따라서 time()에 의해 반환 된 값은 int 필드에 저장하기에 너무 큰 숫자가됩니다.MySQL이 INT를 저장하는 방법과 일치하지 않습니까?

그러나 시간 소인은 잘리지 않으므로 어떻게 큰 값을 저장할 수 있습니까? 데이터베이스 불일치입니까 아니면 뭔가 빠졌습니까?

답변

2

신시대 (1970) 이후 현재 1343399732 초가 경과했으며 이는 서명 된 int에 저장 될 수 있습니다.

2038과 관련된 초를 처리하므로 초를 부호있는 32 비트 정수로 저장할 때 문제가 발생합니다.

+1

nos, 귀하의 답변은 유효하지 않습니다. 현재 실제로 신기원 이후로 1343399803 초가 경과했습니다. :] –

+0

아아 나는 숫자를 잘못 계산 했어야합니다 .. 그래서 이것은 악명 높은 y2k38 문제입니까? 확실한 해결책은 시간이 올 때 필드 유형을 'BIGINT UNSIGNED'로 변경하는 것입니다. –

관련 문제