2016-05-05 6 views
1

StartDateとEndDateの差を取得したいのですが、その差が0より小さい場合は値0(EndDateはStartDateより前) ROUND()式を繰り返さずにSELECTでこれを行う方法はありますか?差分が0より小さい場合は0を選択し、それ以外の場合は差分を選択します。

SELECT StartDate, EndDate, 
IF(ROUND(TIMESTAMPDIFF(SECOND, StartDate, EndDate)/86400, 1) < 0, 0, ROUND(TIMESTAMPDIFF(SECOND, StartDate, EndDate)/86400, 1)) AS Duration 
FROM table 
WHERE StartDate <= '2016-06-02' AND EndDate >= '2016-06-01'; 

答えて

2

GREATEST()を使用すると、0とその差が大きくなります。

SELECT StartDate, EndDate, 
GREATEST(ROUND(TIMESTAMPDIFF(SECOND, StartDate, EndDate)/86400, 1), 0) AS Duration 
FROM table 
WHERE StartDate <= '2016-06-02' AND EndDate >= '2016-06-01'; 
+0

クール - ありがとう! – Shawn

関連する問題