web-dev-qa-db-ja.com

DATEDIFF()パラメーターの問題

古いDATEDIFF()では、ユーザーは3つのパラメーターを使用できましたが、これを実行して、DATEDIFFから数日ではなく数時間を取得できるようにしました(投稿からの時間を表示しようとしています)。私のデータベースでは、TIMESTAMPとこのコード行を使用して値を取得していますが、追加のパラメーターがあるため、明らかに機能しません。 'hour'または 'hh'を削除すると、クエリが実行され、日数で値が返されます。

SELECT DATEDIFF(hour, CURDATE(), (SELECT Post_Date FROM Post_T WHERE pk_PostID = 1) )

時間単位の値を返す簡単な方法はありますか?

また、MYSQLバージョン5.5.20を使用しています。

8
pcort

ドキュメント で言うように:

DATEDIFF(expr1、expr2)

DATEDIFF()は、ある日付から別の日付までのの値として表されるexpr1 –expr2を返します。 expr1およびexpr2は、日付または日付と時刻の式です。値の日付部分のみが計算に使用されます。

時間単位の結果が必要な場合は、 Timestampdiff を使用する必要があります

TIMESTAMPDIFF(unit、datetime_expr1、datetime_expr2)

Datetime_expr2 – datetime_expr1を返します。ここで、datetime_expr1およびdatetime_expr2は、日付または日時の式です。 1つの式は日付で、もう1つの式は日時です。日付値は、必要に応じて時間部分が「00:00:00」の日時として扱われます。結果の単位(整数)は、unit引数で指定されます。

単位引数は次のようになります。MICROSECOND (microseconds), SECOND, MINUTE, HOUR, DAY, WEEK, MONTH, QUARTER, or YEAR.

あなたの場合、あなたは次のことができます:

SELECT TIMESTAMPDIFF(hour, CURDATE(), (SELECT Post_Date FROM Post_T WHERE pk_PostID = 1) )
28
Filipe Silva