programing

MySQL: 유닉스 타임스탬프 또는 DATTIME 중 가장 사용하기 좋은 것은 무엇입니까?

lastcode 2023. 9. 24. 12:54
반응형

MySQL: 유닉스 타임스탬프 또는 DATTIME 중 가장 사용하기 좋은 것은 무엇입니까?

아마 많은 코더들이 이 질문을 하고 싶어할 것입니다.MySQL 시간 형식 각각의 장점은 무엇입니까?그리고 어떤 것을 당신의 앱에서 사용하는 것을 선호할 것인지.

저는 유닉스 타임스탬프를 사용합니다. 아마도 저는 그것으로 레코드를 변환하고 주문하는 것이 쉽다는 것을 알고 DATTIME을 시도한 적이 없기 때문입니다. 하지만 어쨌든 누군가가 제가 틀렸다고 말한다면 마음을 바꿀 준비가 되어 있습니다.

감사해요.

타임스탬프(PHP와 MySQL 모두)는 32비트(4바이트) 정수를 사용하여 저장됩니다. 즉, 1970년에서 2038년 사이의 날짜 범위로 제한됩니다.

DATETIME해당 제한은 없지만 더 많은 바이트(잘못된 경우 8바이트)를 사용하여 저장됩니다.


그 후 PHP로 표시되는 타임스탬프를 저장하거나 MySQL로 표시되는 타임스탬프를 저장하는 사이:


그리고 MySQL 간의 자세한 정보는TIMESTAMP그리고.DATETIME데이터 형식, 10.3.1 참조. DATETIME, DATE 및 TIMESTAMP 유형

다른 사람들이 말했듯이, 타임스탬프는 1970년부터 2038년까지 날짜 시간의 더 작은 범위를 나타낼 수 있습니다.그러나 타임스탬프는 Unix Epoch(1970-01-01 00:00:00 UTC) 이후의 시간을 측정하므로 시간대와 무관합니다. 반면 DATTIME은 시간대 없이 날짜와 시간을 저장합니다.즉, 타임스탬프는 특정 시점을 명확하게 참조하는 반면, DATTIME이 참조하는 정확한 시점은 시간대(DATTIME 필드에 저장되지 않음)를 필요로 합니다.이 문제가 중요한 이유를 알아보려면 시간대를 변경하면 어떤 일이 발생하는지 생각해 보세요.

날짜 시간 2010-03-27 UTC 12:00을 저장하고 싶다고 가정합니다.이를 저장하고 타임스탬프 또는 DATTIME을 사용하여 검색하면 일반적으로 차이가 없는 것으로 나타납니다.그러나 이제 서버가 현지 시간대가 UTC+01이 되도록 변경되면 날짜 시간을 빼내면 두 가지 다른 결과를 얻을 수 있습니다.

필드를 DATTIME으로 설정하면 시간대 변경에도 불구하고 날짜 시간을 2010-03-27 12:00으로 보고합니다.필드를 타임스탬프로 설정하면 날짜는 2010-03-27 11:00으로 보고됩니다.이것은 두 가지 데이터 유형 모두의 문제가 아닙니다. 단지 서로 약간 다른 정보를 저장하기 때문입니다.

그건 정말 달라요.하나가 다른 하나를 극복하는 두 가지 예를 들어보겠습니다.

사용자 세션을 데이터베이스에 저장하고 빠른 행 검색(인덱스 포함)을 위해 세션 생성 시간(타임스탬프 형식)을 사용할 때 타임스탬프가 DATTIME보다 더 좋습니다.
예를 들어 테이블은 다음과 같습니다.
[session_create_time AS Timestamp][IP_address AS 32bit Int][etc...]
처음 두 열에 인덱스가 있으면 쿼리 속도가 정말 빨라질 수 있습니다.한 에 대한 값 이 있는 session_create_time필드, 그러면 훨씬 더 많은 시간이 걸릴 수 있습니다.사용자가 페이지를 요청할 때마다 세션 쿼리가 실행되므로 효율성이 매우 중요합니다.

사용자의 생년월일이나 유연한 시간 범위가 필요한 일부 과거 이벤트를 저장하려면 타임스탬프보다 DATTIME이 더 좋습니다.

1970년 1월 1일 이전에 기록을 디지털화하지 않는 한, 저는 UNIX 시대를 좋아합니다.그것은 단지 선호도의 문제이고, 전체 부호 없는 숫자는 여러 언어를 사용할 때 다루기가 더 쉽습니다.

1970년 1월 1일에 시작한다는 것을 명심하세요.많은 회사들이 그 이전부터 수십 년간, 더 오래는 아니더라도, 사업을 해왔습니다.

언급URL : https://stackoverflow.com/questions/2533767/mysql-whats-the-best-to-use-unix-timestamp-or-datetime

반응형