2011-07-29 9 views
0

ここに最初の質問がありますので、これが明らかであれば私を許してください。私は、私のMySQLデータベースの 'TIME'データ型で作業していて、タイムスタンプの先頭から先頭のゼロをトリミングする最善の方法を見つけようとしているのです。PHPを使用してTime MySQLのデータ型を正しく表示/表示する

具体的には、私のデータベースには曲テーブルがあり、そのテーブルにはsong_lengthカラムがあります。この列はTimeデータ型を使用するため、プレゼンテーションは常にhh:mm:ssです。

私の曲がわずか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()時間(分)を決定するための数学を簡単に行うことができるという明白なことに加えて、Timeデータ型ではなくIntデータ型として時間を格納することに他に大きな利点がありますか? – stealthify

+0

時間列でソートしたい場合は、より簡単かもしれません(MySQLがTIME colをソートできるかどうかわかりません)。また、特定のアーティストによる曲の平均的な長さを求めたい場合は、 –

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フィールドの文脈では、おそらくもっと良い解決策です! –

関連する問題