2012-02-17 15 views
3

MySQLのドキュメントを見ると、DATE_FORMAT(TIME_FORMAT参照)の下で、MySQL TIME値(例:172:04:11)を " 7日間、4時間」と表示されます。日時に対するMySQL TIMEスタンプ

このように時間をフォーマットする方法はありますか(MySQLで)?あるいは、私はPHPで返されたTIME値を操作するだけですか?

+0

'TIME_TO_SEC'を使って総秒数を返すほうが簡単かもしれませんが、PHPに日数と時間数を簡単に把握させるだけです。 –

+0

@ aaron-w。私は結局この結論に達しました。 MySQLがTIMEスタンプを838:59:59で切り捨てることを悲しむ。 IMHOには制限がありません。とにかく、私はTIMESTAMPDIFF(SECOND、date_old、date_newer)を使って秒を取得しています。 –

答えて

1

私は自分の質問に答えるために、物事をクリアする必要が嫌いMySQLのTIME()関数は838:59:59以上の値を切り捨てます。同じ切り捨て問題はありません

TIMESTAMPDIFF(SECOND,date_old,date_newer) 

:私が見つけ

ソリューションは、これを使用していました。一度あなたは私の元の要求のように時間をフォーマットするいくつかのサーバー側のスクリプトを使用して秒を持っている。あなたがPHPで例を見たい場合は、返信するか、自分で書いてください。 :)

希望すると便利ですか?

0

TIMEタイプの変数は、おそらく時間間隔を表すために使用され、addtime()関数を使用して、与えられたDATETIMEタイプ変数にこの間隔を追加することができます。予想通り

SELECT ADDTIME(NOW(), '172:04:11'); 

作品、あなたは日と時間、この時間間隔を表示する必要があれば、単純に使用します。

SELECT CONCAT( 
    FLOOR(HOUR('172:04:11')/24), 
    ' days, ', 
    HOUR('172:04:11') MOD 24, 
    ' hours.'); 
+0

これは838:59:59までのタイムスタンプで動作します。 MySQLはそれよりも大きなTIME値を切り捨てます。 –

0
SELECT CONCAT(FLOOR(TIME_FORMAT('172:04:11', '%H')/24), ' days ', (TIME_FORMAT('172:04:11', '%H') MOD 24), ' hours ', TIME_FORMAT('172:04:11', '%i'), ' minutes ', TIME_FORMAT('172:04:11', '%s'), ' seconds') 
+0

これは838:59:59までのタイムスタンプでのみ機能します。 MySQLはそれよりも大きなTIME値を切り捨てます。 999:59:59 ... 1999:59:59 ...のいずれかを使用してください。どちらも34日、22時間、59分、59秒です。 –

関連する問題