2011-07-29 2 views
0

을 정확하게 표시/표시합니다. 여기에 첫 번째 질문이 있으므로 분명한 사실이라면 저에게 용서하십시오. 내 MySQL 데이터베이스에서 'TIME'데이터 유형으로 작업하는 데 약간의 문제가 있으며 타임 스탬프의 시작 부분에서 맨 앞의 0을 자르는 가장 좋은 방법을 찾으려고합니다.PHP를 사용하여 Time MySQL 데이터 유형

더 구체적으로 말해서 데이터베이스에 노래 테이블이 있고 그 테이블에 song_length 열이 있습니다. 이 열은 시간 데이터 유형을 사용하므로 프레젠테이션은 항상 hh : mm : ss입니다.

내 노래가 3 분 42 초 (예 : 3 분 42 초) 인 경우 00:03:42가 아닌 3시 42 분으로 표시되도록하고 싶습니다. 이 같은 것을 처리 할 PHP 함수가 내장되어 있습니까 (date()와 비슷합니까?)? 그래도 난 당신이라면 배열로

답변

0

분할은, 그때 (초)을 나타내는 정수로 시간을 저장하는 것, int로

$time = '00:03:42'; 
$parts = explode(':', $time); 
$hours = (int) $parts[0]; 
$minutes = (int) $parts[1]; 
$seconds = (int) $parts[2]; 

로 각 부분을 캐스팅.

+0

이 주셔서 감사 때 다른 형식을 사용 확인해야 date() 있습니다! 명백한 것 (분/시간을 결정하는 수학을 쉽게 할 수 있음) 외에 시간 데이터 유형과 달리 Int 데이터 유형으로 시간을 저장하는 데 다른 중요한 이점이 있습니까? – stealthify

+0

시간 열을 기준으로 정렬하려면 * MySQL이 TIME 열을 정렬 할 수 있는지 여부를 쉽게 알지 못할 수 있습니다. 또한, 특정 아티스트의 노래 평균 길이를 구하고 싶다면 말하십시오. –

1

하기 그냥 $hours > 0

$d = new DateTime($time); 
echo $d->format('H') > 0 
    ? ltrim($d->format('H:i:s'), '0') 
    : ltrim($d->format('i:s'), '0'); 

http://ideone.com/eAWun

+0

신속한 도움에 감사드립니다, 킹. 이것은 정확히 내가 찾고 있었던 것입니다 (Int가 아닌 Time 데이터 유형으로 시간을 계속 유지하기로 결정한 경우). 다시 한 번 감사드립니다! – stealthify

+0

+1, TIME 필드의 컨텍스트에서 볼 때 더 나은 해결책 일 것입니다. –

관련 문제