2013-12-11 4 views
3

정기적으로 클라이언트의 데이터베이스에 자동으로 통합 될 수 있도록 MySQL의 데이터를 매우 특정한 datetime 형식으로 변환해야합니다.MySQL datetime을 내보내기 용으로 매우 특정한 형식으로 변환

일반적인 MySQL 타임 스탬프를 YYYY-MM-DD hh : mm : ss 형식 (예 : 2012-01-10 10:58:07)으로 변환하는 방법이 있는지 알고 싶습니다. 매우 구체적인 문자열 dd-Mos-yy hh : mm : ss.sss와 같은 날짜/시간 형식을 설명합니다 (예 : 07-9 월 -10 12 : 00 : 00.000). 새 날짜/시간 형식은 (밀리 초 값까지)이어야합니다.

들어오는 데이터를 조작하여 MySQL이 받아 들일 수있는 datetime 형식으로 문자열을 입력하는 영리한 방법이 있다는 것을 알고 있지만 데이터를 내보내는 데 같은 도구를 찾지 못하는 것 같습니다. 나는 SQL을 사용하여 대부분을 처리하고 싶지만 PHP를 사용하는 것이 더 나은 도구라면 약간의 지식이 필요하다.

+0

DATE_FORMAT (날짜, 형식) http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html#function_date-format –

+0

밀리 초가 필요합니다. 000'하지만 실제로 날짜/시간 데이터를 가지고 있습니까? – JakeGould

+0

아니요, 그렇지 않습니다. MySQL이 제공하는 모든 것에 추가해야 할 것입니다. – user1763897

답변

1

밀리 초 정보를 아직받지 못했다면 어디서 정보를 얻을 수 있습니까? 밀리 초를 '000'- 하드 코드로 설정해야합니다. 이제 그런 단순한는 : 다른 데이터베이스 서버가 같은 시간대를 사용하고

echo date('dd-Mos-yy hh:mm:ss', strtotime($mysql_time)) . '000'; 

또한, 확인한다. 그렇지 않으면 시간을 변환해야 할 수도 있습니다. 당신은 MySQL의 쿼리를 만들 때

+0

"이미 가지고 있지 않다면 밀리 초 정보를 어디에서 얻을 수 있습니까?"맞습니다! – JakeGould

+1

yeap :) 코드가 mysql에서만 실행될 것이라고 확신하면 솔루션을 더 좋아합니다. 데이터베이스 서버에서 작업을 완료해야하기 때문입니다. 하지만 난 휴대용'DATE_CONVERT()'여러 SQL 데이터베이스 엔진 사이에 얼마나 잘 모르겠습니다. 모양을 가지고 가치가있을 것입니다 .. – hek2mgl

5

그냥 DATE_FORMAT()를 사용

SELECT DATE_FORMAT(date, '%d-%b-%y %H:%m:%s.%f') as date_formatted FROM your_table; 

이뿐만 아니라 %f 옵션을 사용하여 마이크로를 처리하지만 귀하의 질문 사양 아웃으로 6 자리 &없는 3 자리 숫자를 제공합니다. 밀리 초 동안 날짜가 3 자리가 필요하다는 사실을 진정으로 알고 있다면 SUBSTRING()을 사용하여 필요한 문자열 날짜 데이터를 반환 할 수 있습니다. 이

SELECT SUBSTRING(DATE_FORMAT(date, '%d-%b-%y %H:%m:%s.%f'),1,22) as date_formatted FROM your_table; 

을 작동해야하지만 당신은 또한 단지 명시 적으로 같은 시간 이후 3 0 년대를 설정하여 3 개 자리를 꾸며 낼 수 있습니다

SELECT DATE_FORMAT(date, '%d-%b-%y %H:%m:%s.000') as date_formatted FROM your_table; 

주를 %f 지금 .000 방법. 하지만 실제로는 .000이 단순히 실제 데이터를 기반으로하지 않는 텍스트 &으로 추가되기 때문에 밀리 초 정밀도가 아닙니다. 적어도 %f은 실제 날짜 데이터로 작업하고 있습니다.

위의 예제를 기반으로한다면 DATE_FORMAT은 100 % 완벽하지 않아서 PHP 날짜 형식을 사용하는 것이 가장 좋은 방법 일 것입니다. 그렇다면 날짜/시간 데이터는 유닉스 타임 스탬프로 저장 될 것인가? 아니면 그냥 타임 스탬프로? 그것을 변환 할 UNIX_TIMESTAMP()를 사용하여 단지 타임 스탬프가 있다면

는 :

SELECT UNIX_TIMESTAMP(date) as date_unixtimestamp FROM your_table; 

그런 다음 date_unixtimestamp 및 형식 것은 당신이 PHP에서 원하는대로하는 것이 걸릴.

+1

놀라운! 너는 나의 영웅 JakeGould이야! 나는 하루 종일 이것을 알아 내려고 노력했다. – user1763897

+0

감사합니다! 다행히도 이것은 당신과 다른 사람들을 도울 것입니다. – JakeGould

관련 문제