2017-05-26 3 views
2

私は負の時間を返す必要があります。例えばMySql DateDiffが負の値を返さない

SELECT 
CONCAT(FLOOR(HOUR(TIMEDIFF('2017-05-19 12:32:11', NOW()))/24), ' days ', 
MOD(HOUR(TIMEDIFF('2017-05-19 12:32:11', NOW())), 24), ' hours ', MINUTE(TIMEDIFF('2017-05-19 12:32:11', NOW())), ' minutes') AS RemainigTime, 
FROM kartica 

これは

-7日10時間

を返す必要があります...しかし、私は

7日10時間を取得します

負の表示方法? );

...

+0

あなたのタイトルは 'datediff'を言いますが、質問は' timediffを使用しています'。 'timediff'は負の値を返しますが、' HOUR(TIMEDIFF(...)) 'は正を返します。 – Barmar

答えて

1

のような別の型に結果をキャストする必要があります。

SELECT CONCAT(
    IF('2017-05-19 12:32:11' < NOW(), '-', ''), 
    FLOOR(HOUR(TIMEDIFF('2017-05-19 12:32:11', NOW()))/24), ' days ', 
    MOD(HOUR(TIMEDIFF('2017-05-19 12:32:11', NOW())), 24), ' hours ', 
    MINUTE(TIMEDIFF('2017-05-19 12:32:11', NOW())), ' minutes' 
) AS RemainigTime 
FROM kartica 
0

だdiferenceは7日、10時間であるので、常に、何-7日がないです。あなたはそれはとても、大きな/小さな比較することなく、あなたに違いを与えるでしょうREAL

関連する問題