MySQL (InnoDB) DB에서 TIMESTAMP 필드를 INT로 변환해야합니다. TIMESTAMP를 INT로 변환하는 것이 이상한 일임을 알고 있지만 여전히해야합니다. :)TIMESTAMP를 INTEGER로 변환하는 MySQL - 시간대
시간이 많이 걸릴 것으로 보이지만 일부 시간대 및 일광 절약 시간 오류가 있습니다.
난 열 당 내 SQL 코드를 생성하는 스크립트가 있습니다. 예를 들어, 생성
ALTER TABLE alarmLog ADD COLUMN started_tmp INT UNSIGNED;
UPDATE alarmLog SET started_tmp = UNIX_TIMESTAMP(started);
ALTER TABLE alarmLog DROP started;
alter TABLE alarmLog CHANGE started_tmp started INT UNSIGNED NULL DEFAULT 0;
내가 전에, 결과가 좋아 보인다 select FROM_UNIXTIME(1291788036);
를 사용하여 데이터 후 비교합니다.
그런 다음 모든 클라이언트 측 소프트웨어를 UTC로 변환하고이를 저장할 때 해당 INT를 사용하도록 변경하는 것이 좋습니다. 검색 할 때 해당 INT는 현재 시간대로 변환됩니다. 이 시나리오에 대한
그러나 워드 프로세서 warn me (CET에서 일광 절약) :
mysql> SELECT UNIX_TIMESTAMP('2005-03-27 02:00:00');
+---------------------------------------+
| UNIX_TIMESTAMP('2005-03-27 02:00:00') |
+---------------------------------------+
| 1111885200 |
+---------------------------------------+
1 row in set (0.00 sec)
mysql> SELECT UNIX_TIMESTAMP('2005-03-27 03:00:00');
+---------------------------------------+
| UNIX_TIMESTAMP('2005-03-27 03:00:00') |
+---------------------------------------+
| 1111885200 |
+---------------------------------------+
1 row in set (0.00 sec)
방법 API 및 OS의 보통 일광 절약 처리합니까? 내 PC는 시계가 UTC로, 여름 시간에 OS가 2 시간, 겨울 시간이 1 시간이라는 것을 알고 있습니다. 나는 그것이 DST인지 여부를 결정하기 위해 UTC 시간을 사용한다고 가정합니다.
그럼 어떻게 처리해야합니까? DST 오프셋을 지정하기 위해 데이터베이스에 필드를 추가하는 유일한 솔루션입니까?
서머 타임이 다른 시간대입니다. 예 : CET는 중부 유럽 표준시이며 CEST는 중부 유럽 서머 타임입니다. 운영 체제는 전환시기를 알고 있습니다. 시간 소인에 UTC를 사용하는 한 로컬 시간으로 변환하는 것은 프리젠 테이션 계층에 달려 있습니다. –