[SQL] 현지 시간대에 저장된 UTC 시간을 변환 MySQL을 할 수 있습니까?
SQL현지 시간대에 저장된 UTC 시간을 변환 MySQL을 할 수 있습니까?
직접 정상 select 문에 현지 시간대 시간에 저장된 UTC 시간을 변환 MySQL을 할 수 있습니까?
하자 당신은 타임 스탬프 (UTC)로 일부 데이터를 말한다.
CREATE TABLE `SomeDateTable` (
`id` int(11) NOT NULL auto_increment,
`value` float NOT NULL default '0',
`date` datetime NOT NULL default '0000-00-00 00:00:00',
PRIMARY KEY (`id`)
)
그런 때
"select value, date from SomeDateTable";
나는 물론 그 저장 UTC 형태로 모든 날짜를 얻을.
그러나하자, 나는 (DST과) 다른 시간대에서 그들을하고 싶은 말 그때 나는 모든 날짜가 선택한 시간대에 백업 할 수 있도록 선택 쿼리에 어떤 마법을 추가 할 수 있습니까?
"select value, TIMEZONE(date, "Europe/Berlin") from SomeDateTable";
아니면 내가 어떤 PHP 코드처럼, 위에 다른 레이어에서이 작업을 수행해야합니다? (대부분의 사람들이이 문제를 해결 한 방법이 될 것 같습니다).
당신의 MySQL 설치 당신이 그것을 매우 깨끗한 솔루션입니다 CONVERT_TZ을 사용할 수 있도록 허용하는 경우, 이 예제 프로그램은 사용 방법.
SELECT CONVERT_TZ( '2010-01-01 12:00', 'UTC', 'Europe/Stockholm' )
이 일부 MySQL의 설치, 관리와 사용이 기능이 누락되어 있기 때문에 좋은 방법입니다 경우 모르겠어요.
해결법
-
==============================
1.그래의 CONVERT_TZ 기능이있다.
그래의 CONVERT_TZ 기능이있다.
-
==============================
2.당신은 또한이 같은 숫자 오프셋 (offset) 기능을 사용할 수 있습니다 "미국 / 덴버"또는 "GMT"와 같은 인간 친화적 인 시간대 이름을 사용하는 (예를 들면 인해 SUPER 접근의 부족) MySQL의 환경을 구성 할 수없는 사람들을 위해 :
당신은 또한이 같은 숫자 오프셋 (offset) 기능을 사용할 수 있습니다 "미국 / 덴버"또는 "GMT"와 같은 인간 친화적 인 시간대 이름을 사용하는 (예를 들면 인해 SUPER 접근의 부족) MySQL의 환경을 구성 할 수없는 사람들을 위해 :
CONVERT_TZ(date,'+00:00','-07:00')
-
==============================
3.
select convert_tz(now(),@@session.time_zone,'+03:00')
시간을 얻을 경우에만 사용
time(convert_tz(now(),@@session.time_zone,'+03:00'))
-
==============================
4.하나는 쉽게 사용할 수 있습니다
하나는 쉽게 사용할 수 있습니다
CONVERT_TZ(your_timestamp_column_name, 'UTC', 'your_desired_timezone_name')
예를 들면 :
CONVERT_TZ(timeperiod, 'UTC', 'Asia/Karachi')
게다가 이것은 또한 문 및 타임 스탬프를 비교 내가 어디 절에 다음을 사용 WHERE에서 사용할 수 있습니다 :
WHERE CONVERT_TZ(timeperiod, 'UTC', '{$this->timezone}') NOT BETWEEN {$timeperiods['today_start']} AND {$timeperiods['today_end']}
-
==============================
5.내가 사용하는 제안
내가 사용하는 제안
SET time_zone = 'proper timezone';
데이터베이스에 연결 한 후 바로 한 번 수행된다. 를 선택할 때이 후 모든 타임 스탬프가 자동으로 변환됩니다.
-
==============================
6.나는 확실히 어떤 수학은 DATETIME 데이터 유형에 할 수 있지 않다, 그러나 당신이 PHP를 사용하는 경우, 나는 강하게 정수 기반의 타임 스탬프를 사용하는 것이 좋습니다. 기본적으로, 당신은 PHP의 시간 () 함수를 사용하여 데이터베이스에서 4 바이트 정수를 저장할 수 있습니다. 이것은에 수학을하고 훨씬 더 간단합니다.
나는 확실히 어떤 수학은 DATETIME 데이터 유형에 할 수 있지 않다, 그러나 당신이 PHP를 사용하는 경우, 나는 강하게 정수 기반의 타임 스탬프를 사용하는 것이 좋습니다. 기본적으로, 당신은 PHP의 시간 () 함수를 사용하여 데이터베이스에서 4 바이트 정수를 저장할 수 있습니다. 이것은에 수학을하고 훨씬 더 간단합니다.
from https://stackoverflow.com/questions/2187593/can-mysql-convert-a-stored-utc-time-to-local-timezone by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] SQL은에 SQL Server 2008에서 테이블 만들기 댓글 (0) | 2020.05.12 |
---|---|
[SQL] 외래 키에서 참조하는 열 목록과 일치 참조 테이블에 기본 또는 후보 키가 없습니다 (0) | 2020.05.12 |
[SQL] T-SQL 등 %의 매개 변수 % 절 (0) | 2020.05.12 |
[SQL] MAX와 GROUP BY를 사용하여 모든 해당 필드를 선택 (0) | 2020.05.12 |
[SQL] 오라클의 N 번째 최대 급여 (0) | 2020.05.12 |