2012-10-16 6 views
0

신기원으로부터 ms 단위 인 열에 대해 대량 질의 업데이트를하려고합니다. 내 where 절에 따라 반환 된 각 행에 대해 전달 된 값으로 시간 값을 업데이트하고 여전히 ms로 저장해야합니다. 내 업데이트 절은 어떻게 생겼을까요?신기원 시간에서 HH : MM : SS

예를 들어, 나는 두 개의 행

MY_TIMESTAMP | VALUE 
---------------------- 
1281275302000 | some val 1 
1347198502000 | some val 2 

행 일 1 대응 2010 년 08 팔월이 행 2 일에 해당하는 세계 협정시 13시 48분 22초, 세계 협정시 13시 48분 22초

2012 9월 9일

이제 양쪽 시간을 설정하려고합니다 (예 : 07:00:00). 날짜는 그대로 두십시오. 2010년 8월 8일 (일) 세계 협정시 07시 00분 0초 및 2012년 9월 9일 (일) 세계 협정시 07시 00분 0초에 해당하는

MY_TIMESTAMP | VALUE 
---------------------- 
1281250800000 | some val 1 
1347174000000 | some val 2 

답변

0

그것은 어떤 시간대 고려를 방지하기 위해, 단순한 수학으로 가능해야한다 :

UPDATE MY_TABLE 
SET MY_TIMESTAMP = MY_TIMESTAMP - (MY_TIMESTAMP % 86400000) + 25200000 

MY_TIMESTAMP - (MY_TIMESTAMP % 86400000) 당신에게

25200000 밀리 초 7 시간에 해당하는 시간없이 날짜를 제공합니다.

+0

그래,이게 더 낫다고 생각해. –

+0

멋진 해결책, 고마워. 나는 훨씬 더 복잡한 길을 가고 있었다. – Marianna

0

당신은 할 수 있습니다 : 같은 갱신 명령의 결과가 보일 것입니다 이 사용 FROM_UNIXTIME :

UPDATE MY_TABLE 
    SET MY_TIMESTAMP = (UNIX_TIMESTAMP(TIMESTAMP(DATE(FROM_UNIXTIME(MY_TIMESTAMP/1000 + 14400)), '07:00:00')) - 14400) * 1000; 

테스트 당신이 선택과 올바른 결과를 제공하는 경우 :

SELECT (UNIX_TIMESTAMP(TIMESTAMP(DATE(FROM_UNIXTIME(MY_TIMESTAMP/1000 + 14400)), '07:00:00')) - 14400) * 1000 
    FROM MY_TABLE LIMIT 100; 

PS 14400은 UTC에서의 초 단위 오프셋입니다. 당신이 다른 경우, 그것을 바꿉니다.

관련 문제