2012-08-23 2 views
1

을 제공 CURRENT_TIMESTAMP. 열을 수정할 때까지이 열의 값이 현재 시간 기록으로 업데이트되지 않습니다. 즉, ON UPDATE CURRENT_TIMESTAMP이 정상적으로 작동하는 것 같습니다.MySQL은 나에게 모든 공

나는 실행하는 경우 :

SELECT version() , @@time_zone , @@system_time_zone , NOW() , UTC_TIMESTAMP() 

는 내가 가진 :

'5.5.15', '+10:00', 'EST', '2012-08-23 14:56:59', '2012-08-23 04:56:59' 
내가 그렇게 어떻게 열 ts의 UTC 시간을 저장하고 싶습니다

? 이 관련이 있다면, 나는 mysql.time_zone* 테이블을 생성하기 위해 노력했다

확실하지 :.

Miranda-Macbook: ./mysql_tzinfo_to_sql /usr/share/zoneinfo | ./mysql -p -u root mysql 
Enter password: Warning: Unable to load '/usr/share/zoneinfo/+VERSION' as time zone. Skipping it. 

Warning: Unable to load '/usr/share/zoneinfo/Asia/Riyadh87' as time zone. Skipping it. 
Warning: Unable to load '/usr/share/zoneinfo/Asia/Riyadh88' as time zone. Skipping it. 
Warning: Unable to load '/usr/share/zoneinfo/Asia/Riyadh89' as time zone. Skipping it. 
Warning: Unable to load '/usr/share/zoneinfo/Mideast/Riyadh87' as time zone. Skipping it. 
Warning: Unable to load '/usr/share/zoneinfo/Mideast/Riyadh88' as time zone. Skipping it. 
Warning: Unable to load '/usr/share/zoneinfo/Mideast/Riyadh89' as time zone. Skipping it. 
Warning: Unable to load '/usr/share/zoneinfo/iso3166.tab' as time zone. Skipping it. 
Warning: Unable to load '/usr/share/zoneinfo/zone.tab' as time zone. Skipping it. 

이 감사 @Sameer 및 @Marc B. 가 지금은 타임 스탬프 더 이해 (이 article의 도움으로) 그것은 이미 UTC에 저장되기 때문에 내가 필요한 것은 사실입니다 :

SET time_zone = 'SYSTEM'; 
UPDATE tablename SET ts=now() 
+3

해당 열을 추가 할 때 테이블의 기존 행에 현재 시간 스탬프가 표시 될 것으로 예상하지 않기를 바랍니다. 기존 행은 0 값을 갖습니다. 삽입 된 새 행에는 현재 시간 소인이 있습니다. 기존 행의 경우 일회성 업데이트 명령을 실행해야합니다. – Sameer

답변

2
INSERT INTO yourtable (ts) VALUES (now()) 
UPDATE yourtable SET ts=now() 

만큼 당신이있어 어떤으로의 ts 필드에 tuffing하는 것은 유효한 MySQL 타임 스탬프 문자열 (yyyy-mm-dd hh:mm:ss)이며 시간대가 무엇인지는 중요하지 않습니다. 그것은 변환 또는 검색에만 관련이 있습니다 - mysql datefield 자체는 시간대에 대한 개념이 없으며, 일부 날짜/시간 데이터의 저장소 일뿐입니다.