programing

날짜/시간 또는 타임스탬프를 사용할 때

sourcejob 2022. 11. 4. 23:28
반응형

날짜/시간 또는 타임스탬프를 사용할 때

나는 이것을 검색해 보았지만 명확한 답은 없다(특히 후자의 경우).날짜/시간 또는 타임스탬프를 사용해야 하는 경우

MS SQL Server 를 사용하고 있는 경우(사용하고 있지 않은 경우는, 다음의 「업데이트」를 참조해 주세요).

테이블에는 타임스탬프 컬럼을 1개만 포함할 수 있습니다.타임스탬프 컬럼의 값은 타임스탬프 컬럼을 포함하는 행을 삽입 또는 갱신할 때마다 갱신됩니다.이 속성으로 인해 타임스탬프 열은 키, 특히 기본 키에 적합하지 않습니다.행을 업데이트하면 타임스탬프 값이 변경되어 키 값이 변경됩니다.열이 기본 키에 있는 경우 이전 키 값은 더 이상 유효하지 않으며 이전 값을 참조하는 외부 키는 더 이상 유효하지 않습니다.테이블이 동적 커서로 참조되는 경우 모든 업데이트가 커서 행의 위치를 변경합니다.열이 인덱스 키에 있는 경우 데이터 행에 대한 모든 업데이트도 인덱스의 업데이트를 생성합니다.

MSDN에 관한 정보

행에 대한 날짜/시간 정보를 저장해야 하며 해당 날짜/시간을 변경하지 않으면 DateTime을 사용합니다.그렇지 않으면 Timestamp를 사용합니다.

주의: MS SQL Server 타임스탬프 필드는 날짜나 시간이 아닙니다.데이터가 변경된 상대 시퀀스를 바이너리로 나타냅니다.

갱신하다

MySQL을 업데이트한 경우:

TIMESTAMP 값은 저장을 위해 현재 시간대에서 UTC로 변환되고 검색을 위해 UTC에서 현재 시간대로 다시 변환됩니다.(이것은, TIMESTAMP 데이터 타입에 대해서만 행해집니다만, DATETIME 등의 다른 타입에는 행해지지 않습니다.

MySQL 참조에서 인용

더욱 주목해야 할 점은 다음과 같습니다.

TIMESTAMP 값을 저장한 후 시간대를 변경하고 값을 가져오면 검색된 값이 저장된 값과 다릅니다.

따라서 시간대에 걸쳐 응용 프로그램을 사용하고 개별 사용자 설정을 반영하기 위해 날짜/시간이 필요한 경우 타임스탬프를 사용합니다.시간대에 관계없이 일관성이 필요한 경우 Datetime 사용

자세한 내용은 필드 'datetime' 또는 'timestamp'를 사용해야 합니까?를 참조하십시오.그것은 그 주제에 대해 포괄적으로 다루고 있다.

편집 - MySQL 속성 및 사용 경험을 요약합니다.

타임스탬프 -

a) 열당 4바이트(datetime의 경우 8바이트)

  • DATETIME보다 낮은 범위('1970-01 00:00:01' UTC ~ '2038-01-09 03:14:07' UTC) - 생년월일 등에 사용하지 마십시오.대부분의 사용 패턴은 행 업데이트 등의 작업을 위해 실제로 'NOW'의 'Timestamp'를 제공하는 것입니다.

b) 내부에 정수로 저장됨

  • 퍼포먼스 중시...내 개인적인 경험은 애매했다.가끔은 더 빠르기도 하고...DATETIME보다 느리기도 합니다만, 공간도 적게 듭니다.

c) 시간대 정보 있음!

  • 그래서 - TIMESTAMP에 '2011-01-01 3:30'을 추가하면 (curr timezone은 EST - Boston)..나중에 server & mysql timezone을 PST(캘리포니아)로 변경하고 서버를 재시작하면 값이 '2011-01-01 00:00'로 변경됩니다.(PLEASE CONFERM... 오래전에 테스트했습니다)단, DATETIME은 그대로 유지됩니다.

d) 모든 DATE() / DAY() / MONTH() 함수는 TIMESTAMP 와 DATETIME 양쪽에 대해 기능합니다.

e) MySQL에서는 테이블당 여러 TIMESTAMPS를 설정할 수 있습니다.

  • (예, 단, 행 업데이트 시 첫 번째 항목 중 하나만 자동으로 업데이트됩니다.)1개만 NULL로 할 수 있다(첫 번째 생각)

f) 테이블의 첫 번째 TIMESTAMP가 자동으로 업데이트됩니다.

  • 그러니까 다른 용도로 사용할 때는 조심하세요.null을 허용하고 싶습니다.(null은 DATETIME과 TIMESTAMP 둘 다 '0000-00 00:00:00'로 저장됨)

다른 목적으로 여러 타임스탬프를 사용했습니다.공간 절약이 필요했습니다(매우 주의하고, 이러한 모든 문제를 염두에 둘 필요가 있었습니다.

타임스탬프 이외의 목적으로 TIMESTAMP에 접속하는 것은, 무엇을 하고 있는지 알고 있는 경우에 한정해 주세요.SPACE가 큰 관심사라면(예를 들어 15,000,000 행의 증가 및 8 데이터 타임!)

당신의 질문을 명확하게 이해하지 못했지만, 아래 링크를 참조하십시오.도움이 될 것이다

http://www.sqlteam.com/article/timestamps-vs-datetime-data-types

데이터베이스 서버를 지정해야 합니다.

일부 서버 엔진은 타임스탬프 필드를 자동으로 업데이트하므로 Optimistic Locking에서 레코드 버전으로 사용할 수 있습니다.

  • MySQL의 경우DateTime할 수 DATE()timestamp그럴수는 없어요.
  • Timestamp can 、 can can 、 can can can can can보다 앞에는 할 수 없습니다.01-01-1970.
  • 또 하나는 서머타임이 있고 다른 하나는 서머타임이 없습니다(지금 어떤 것이 있는지 기억나지 않습니다).

는 항상 고르는 이에요.DateTime.

언급URL : https://stackoverflow.com/questions/5989539/when-to-use-datetime-or-timestamp

반응형