2012-06-07 66 views
10

私は2人のユーザーの時間差を取得しようとしていますが、時間の違いが必要です。2つの日付の時間差(時間単位)を取得する方法

私はDATEDIFF関数を使用しようとしましたが、間違っています。

SELECT DATEDIFF(*, 
(SELECT max(u1.time_c) 
FROM users u) 
, 
(SELECT max(u2.time_c) 
FROM users u2) 
+2

をあなたは "* * 2人のユーザとの間の時間差を" 何を意味するのですか?タイムゾーンを参考にしていますか?または、他の何か?既存のコードが「間違っている」と言いますが、間違っているとは言いません。私たちは推測する必要がありますか? (私の推測では、['DATEDIFF()'](http://dev.mysql.com/doc/en/date-and-time-functions.html#function_datediff)関数は* days *の違いを返します。 *時間*; 3つではなく2つの引数しか取らないが、*すべて*が間違っている?)。 – eggyal

+0

u.1が2日前に作成され、u.2が昨日作成された場合、その差は24時間です(例: – Ofer

+0

)。詳細情報を追加してください。 – Devart

答えて

3

selectステートメントにはfrom句が必要です。 何かのように

Select date1 - date2 from dual 

返された日付と日付の間の日数。

あなたは時間数たい場合:

Select (date1 - date2)*24 from dual; 

(これはOracle専用です)

+0

回答を受け取ったユニットはどれですか? – Ofer

+0

私はあなたの質問を理解していませんが、結果の種類について尋ねる場合、結果は浮動小数点数、最初のクエリの日数を表し、秒の時間数を表します。たとえば、0.5日は12時間を意味します。別の例:0.2時間= 0.2 * 60分= 12分 –

+0

日付の差がゼロの場合はどうなりますか?どのように時間を得ることができますか? – Sadikhasan

14

MySQL DATEDIFF docsから:

Only the date parts of the values are used in the calculation. 

あなたはこれが時間の差であなたの時間数を与えるTIMEDIFF

を見てみたいと思うでしょう。ここ

は私のコードです(あなたの time_cフィールドはDATETIMEか同様のものと仮定します)

SELECT HOUR(TIMEDIFF( 
    (SELECT max(u1.time_c) FROM users u), 
    (SELECT max(u2.time_c) FROM users u2) 
)) 
関連する問題