MySQLのドキュメントを見ると、DATE_FORMAT(TIME_FORMAT参照)の下で、MySQL TIME値(例:172:04:11)を " 7日間、4時間」と表示されます。日時に対するMySQL TIMEスタンプ
このように時間をフォーマットする方法はありますか(MySQLで)?あるいは、私はPHPで返されたTIME値を操作するだけですか?
MySQLのドキュメントを見ると、DATE_FORMAT(TIME_FORMAT参照)の下で、MySQL TIME値(例:172:04:11)を " 7日間、4時間」と表示されます。日時に対するMySQL TIMEスタンプ
このように時間をフォーマットする方法はありますか(MySQLで)?あるいは、私はPHPで返されたTIME値を操作するだけですか?
私は自分の質問に答えるために、物事をクリアする必要が嫌いMySQLのTIME()関数は838:59:59以上の値を切り捨てます。同じ切り捨て問題はありません
TIMESTAMPDIFF(SECOND,date_old,date_newer)
:私が見つけ
ソリューションは、これを使用していました。一度あなたは私の元の要求のように時間をフォーマットするいくつかのサーバー側のスクリプトを使用して秒を持っている。あなたがPHPで例を見たい場合は、返信するか、自分で書いてください。 :)
希望すると便利ですか?
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.');
これは838:59:59までのタイムスタンプで動作します。 MySQLはそれよりも大きなTIME値を切り捨てます。 –
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')
これは838:59:59までのタイムスタンプでのみ機能します。 MySQLはそれよりも大きなTIME値を切り捨てます。 999:59:59 ... 1999:59:59 ...のいずれかを使用してください。どちらも34日、22時間、59分、59秒です。 –
'TIME_TO_SEC'を使って総秒数を返すほうが簡単かもしれませんが、PHPに日数と時間数を簡単に把握させるだけです。 –
@ aaron-w。私は結局この結論に達しました。 MySQLがTIMEスタンプを838:59:59で切り捨てることを悲しむ。 IMHOには制限がありません。とにかく、私はTIMESTAMPDIFF(SECOND、date_old、date_newer)を使って秒を取得しています。 –