秒数をhh:mm:ss形式に変換するSQL(およびその逆)

| コメント(0) | トラックバック(0)
メルマガ配信した累計秒数を管理画面で参照したりするのに、秒数をhh:mm:ss形式に
したいなーということで・・・

例えば、

10  → 00:00:10
60  → 00:01:00
3601  → 01:00:01

みたいな感じ。

これをスクリプト側で操作するとなると、累計秒をローカルタイム形式に直して
sprintfとかで整形してだらだらだら・・・

と、意外とけっこう面倒くさかったり無駄なメモリを消費したり、なんか効率悪い。
てゆーか、こういう処理はなるべく書きたくないし。

そう思って、ググってたら、目的を一発で達成できるなんとも便利なSQL文を
発見。

------------------------------------------------------------------

「SEC_TO_TIME( 秒数 )」

------------------------------------------------------------------

これで、秒数を勝手にhh:mm:ss形式に変換してくれる。


SELECT SEC_TO_TIME(秒数)

で変換&参照できるが、DBから参照するんであれば、最初から
データ型をTIMEにしておき、

※$timeには秒数を格納

INSERT INTO table VALUES('SEC_TO_TOME($time)')

とかで、あらかじめhh:mm:ss形式でデータをぶち込んでおいてやれば、
インタフェイスが変わったときも便利。


あらためて、データベースって素晴らしいと思った次第。


ちなみにこれの逆は、

TIME_TO_SEC( hh:mm:ss )で、

TIME_TO_SEC(01:00:01) は、 3601 となる。

トラックバック(0)

トラックバックURL: http://www.igreks.jp/blog/mt-tb.cgi/329

コメントする