MySQL/MariaDB: 표준 시간대와 함께 날짜 저장
datetime(clock-time이 있는 달력 날짜)을 테이블에 저장하려고 합니다.
내가 읽은 바로는 DATETIME 타입은 타임존이 없다.
그리고 TIME 유형은 1970년에서 2038년까지로 제한됩니다.
저는 여름(CEST)과 겨울(CET)이 다른 나라에 살고 있습니다.따라서 CEST에서 CET로 전환할 때는 2시간3이 있습니다
시간대가 포함된 날짜/시간을 가질 수 없고 이 시간 3을 구분해야 할 경우 수동으로 처리하는 방법밖에 없습니다.
예를 들어, 다른 열을 지정하거나 DATETIME을 UTC로 변환합니다.
그게 유일한 방법인가요 아니면 제가 놓친 건가요?
당신이 정말 무엇을 하느냐에 달렸어요.
- "이벤트" 캘린더 - 콘서트는 특정 시간대에서 오후 8시에 시작합니다.
- 무슨 일이 일어났을 때의 보편적인 시간.
- ...(타임존의 니즈는 5가지 정도)
MySQL/MariaDB는 2개뿐입니다.
DATETIME
--시계 그림이라고 생각해 주세요.이게 시간대에서 볼 수 있는 거예요TIMESTAMP
우주에서의 이 경우라고 생각해 주세요. 표준 되고 UTC UTC를 UTC로 하면 다시 됩니다).SELECT
(그것)
둘 중 하나라도 마음에 드시면 사용하세요.않다면 것이 좋습니다.TIMESTAMP
타임존 오프셋(분 단위)을 추가합니다만, 이것은 이력 데이터에 대해서만 유효합니다..)(네덜란드에서는 한때 2번째까지 오프셋이 있었습니다.)대부분의 국가는 UTC에서 약 1시간 거리에 있습니다.인도는 30분 오프셋이 있는 가장 큰 나라이지만(전국 표준 시간대이기 때문에), 30분 오프셋(호주/아델라이드, 호주/다윈) 또는 45분 오프셋(태평양/채텀)이 있는 다른 시간대도 많고, 서머타임(호주/아델라이드)이 없는 시간대(호주/다윈)도 있다.t DST 변경은 1944년이었다.)
일반적으로 UTC에 시간을 저장함으로써 많은 두통을 피할 수 있습니다.그러면 '두 시간 3'은 없고, 시간의 화살은 그저 거침없이 앞으로 나아갑니다:)
이 답변은 CEST 14:27 UTC로 데이터베이스에 저장됩니다.최종 사용자에게 익숙한 형식으로 시간을 표시하고 싶다면 Olsen 데이터베이스에서 시간대를 선택하고 이를 사용하여 올바른 오프셋을 계산합니다(또는 해당 시간대의 시간을 항상 표시하려면 시간대를 별도의 열로 저장).
다양한 언어로 타임존을 처리하기 위한 링크 등 자세한 내용은 이 훌륭한 질문과 답변을 참조하십시오.
일반적으로(그리고 가장 일반적인 사용 사례) 타임스탬프는 시간대와 함께 저장되며, 가능하면 UTC를 통해 들어오고 나가는 변환과 비교 시 시간대 차이를 처리할 수 있습니다.기에는모모로로로로로로로로로로로로로로로로로로로로로로로로로로로로로로로로로로로로로로로로로로로로로로, "event occurred at", "item was was changed/created at")입니다.TIMEZONE
캘린더 이벤트의 경우 특별한 규칙이 적용됩니다.
- UTC로 .IANA 간 i i i i i i i i i i i i iUTC로 변환하지 마십시오.타임존이 삭제되지 않는 한 타임존 변경은 이벤트 시각에 영향을 주지 않습니다(실행과는 달리). 즉,
DATETIME
의 두 「」 「」 「 」VARCHAR()
를Pacific/Auckland
, 「」Australia/Sydney
. - "점심은 매일 정오부터 1시간입니다"와 같은 미래의 (반복 가능성이 있는) 이벤트에 대한 부동시간인 경우, 발생을 특정 시점으로 특정할 수 없는 경우에는 시간대를 설정할 수 있습니다.해야 할 경우에는 .
DATETIME
. - 복적적 츠요시향후 각 이벤트의 타임스탬프를 저장하지 말고 RFC5545에 기재된 논리를 사용하여 반복 규칙을 저장하여 미래의 이벤트를 쉽게 생성할 수 있도록 합니다.즉, 타임존 유무, 반복 규칙 및 타임존 유무에 관계없이 반복 이벤트의 Start Time(DTSTART; 시작 시간), Optional End Time(DTEND; 옵션 종료 시간)을 다시 저장합니다.이러한 조합으로 시작 시간과 종료 시간 사이에 이벤트를 생성할 수 있습니다.해당 시간대를 알고 있는 경우는 Absolute 시간(대/소문자 1)으로, 시간대를 알 수 없는 경우는 Floating 이벤트(대/소문자 2) 중 하나입니다.「 」를 사용하고
python
Arrow
라이브러리는 반복 이벤트를 생성하는 데 매우 능숙합니다.
언급URL : https://stackoverflow.com/questions/57219777/mysql-mariadb-store-a-datetime-with-timezone
'programing' 카테고리의 다른 글
쿼리 구문으로 바꾸기 (0) | 2022.11.22 |
---|---|
이상한 PHP 오류: '쓰기 컨텍스트에서 함수 반환 값을 사용할 수 없습니다' (0) | 2022.11.22 |
변경 시 선택한 파일의 전체 경로를 가져오는 방법변경 시 선택한 파일의 전체 경로를 가져오는 방법javascript, jquery-discript를 사용할까요?javascript, jquery-discript를 사용할까요? (0) | 2022.11.22 |
정수 집합이 다른 정수 집합의 부분 집합인지 확인 (0) | 2022.11.22 |
PHP에서 "Unable to allocate memory for pool"이 발생하는 원인은 무엇입니까? (0) | 2022.11.22 |