2017-09-27 22 views
0

非常に簡単な必要があります: ミリ秒単位の値を "##:##:##"(時/分/秒)形式に変換します。FROM_UNIXTIME 1時間余分に返す

SELECT 
    FROM_UNIXTIME(42, "%H:%i:%s") AS pony 
    ,FROM_UNIXTIME(3702, "%H:%i:%s") AS unicorn 

戻り

この機能ではありませんタイムゾーンの設定で
pony  unicorn 
01:00:42 02:01:42 

、私は方法がわからない... FROM_UNIXTIMEが仕事を行うことができます表示されますので、私はそれを使用しますが、この余分な(wtf)時間を削除します。
3600秒を削除すると...私は別の方法を使用する必要がありますね、私は半ダースの変換を使用する必要があれば、私もそれを手動で行うことができNULL

を出力し、負の値を、生成していますそこに何もシンプルで効率的


私は、正確なMySQLバージョンを持っていないが、私はとにかくポータビリティの最小値を必要とします。 MySQL 5.xといっしょに動作しています 手動で計算する必要はありますか?


EDIT:所望のフォーマットと

CONCAT(
    LPAD(FLOOR((my_column/1000)/3600), 2, '0'), ':', 
    LPAD(FLOOR(((my_column/1000) % 3600)/60), 2, '0'), ':', 
    LPAD(FLOOR((my_column/1000) % 60), 2, '0')) AS time 

出力:醜いが、ワーキング "溶液" を選んだ 例 "3時12分04秒" または "123:00:44" 私は醜いを選ぶ必要があった

+0

私の推測はあなたのローカルタイムゾーンです。たぶん 'SET time_zone = 'UTC';を使っているかもしれません;'助けてください、https://stackoverflow.com/q/18276768/5520354 – C14L

+0

@ C14Lを参照してくださいええ、私はそれが******* daylightssavings(Im FR)、今のところ、タイムゾーンのみを設定しようとすると、すべての結果が** null **になりました。また、 'UTC'はvalide値(エラーが発生)であると思われず、 '+00:00'を使用しなければなりませんでした。 – Balmipour

答えて

0

が、ワーキング "溶液":所望のフォーマットで

CONCAT(
    LPAD(FLOOR((my_column/1000)/3600), 2, '0'), ':', 
    LPAD(FLOOR(((my_column/1000) % 3600)/60), 2, '0'), ':', 
    LPAD(FLOOR((my_column/1000) % 60), 2, '0')) AS time 

出力。例 "3時12分04秒" または "123:00:44"

C14Lさんのコメントは、より良い選択する必要がありますが、それだけで物事を悪化させ:/

してください、あれば答えを投稿信頼性と使いやすさがあります。
このような計算を手作業で行うだけでは意味がありません。

関連する問題