2015-02-01 3 views
0

나는 이중 778867200000로 저장되는 날짜 행을 가지고 있으며 이제 datetime으로 변환해야합니다. 나는 그것이 잘못 될 경우에 대비하여 같은 행에서 그들을 변환하려고하지 않으려합니다. 따라서 새 행을 추가했고 기본값은 NULL입니다.Datetime에 MySQL을 두 번

내가 찾고있는 것을 얻기 위해 몇 가지 조합을 시도했지만 운이 없었습니다.

다음 것은 내가 노력했습니다의 유형은

UPDATE daily_quotes t, (SELECT DISTINCT id, date 
        FROM daily_quotes 
        WHERE id BETWEEN 1 AND 5) t1 
SET t.unix_date = CONVERT(t1.date, DATETIME) 
WHERE t.id = t1.id 

사람이 솔루션을 제공 할 수 있습니다 ...입니까?

감사

스티브

PS : 난 그냥 테스트 목적으로 1-5로 제한하고있다. 실제로 300,000 개가 넘는 레코드가 있습니다.

+0

는 그 날짜 1970년 1월 1일 이후 마이크로로 저장하고 있습니까? – Schwern

+0

@Schwern. 나는 그것이 여분의 3 자릿수 때문에 1970 년부터 밀리 세컨드가 될 것이라고 믿지만, 두 가지 예에서 초 또는 밀리 초가 사용되지 않았다. – Devon

답변

1

두 배가 유닉스 에포크 시간대에 있다고 가정하면 MySQL 기능 FROM_UNIXTIME()을 사용하는 것이 좋습니다. 당신의 타임 스탬프가 세 자리 이상으로 그들이해야 이상을 가지고 있기 때문에 Schwern에 의해 지적

SET t.unix_date = FROM_UNIXTIME(t1.date) 

, 당신은 1000 문자열 또는 분할로 트리밍 작업을 수행 할 수 있습니다. 당신은 또한 수

FLOOR(t1.date/1000) 

: FROM_UNIXTIME 분수를 지원하지 않는 경우

ROUND(t1.date/1000) 

반올림이 필요할 수 있습니다

SUBSTRING(t1.date, 1, length(t1.date) - 3) 

은 동일합니다. 그래서 모두 함께

:

SET t.unix_date = FROM_UNIXTIME(SUBSTRING(t1.date, 1, length(t1.date) - 3)) 
+0

그건 내가 시도한 많은 것들 중 하나지만,이 경우에는 작동하지 않습니다. – SteveF

+0

'778867200000'은 데이터베이스의 실제 번호입니까? 실제 숫자와 그것이 나타낼 날짜의 예를 들어주세요. – Devon

+0

예, 데이터베이스의 실제 번호입니다. 1419264000000은 2014 년 12 월 22 일입니다. – SteveF