メルマガ配信した累計秒数を管理画面で参照したりするのに、秒数を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 となる。
したいなーということで・・・
例えば、
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 となる。

コメントする