Reputation: 141
Time difference between 8 pm to 6 am should be 10 hours but it is giving 14 hours
SELECT HOUR(TIMEDIFF(TIME('2018-06-01 20:00:00'),TIME('2018-06-02 06:00:00'))) AS NoofHours
Upvotes: 0
Views: 255
Reputation: 69460
As you con see if you select the parts separatly the TIME has no DATE part:
SELECT TIME('2018-06-01 06:00:00'), TIME('2018-06-02 20:00:00')
OUTPUT:
06:00:00 20:00:00
So 14 is correct
Here an example in SQLFIDDLE
Upvotes: 0
Reputation: 175874
You should correct data type:
SELECT HOUR(TIMEDIFF(TIMESTAMP('2018-06-01 20:00:00'),
TIMESTAMP('2018-06-02 06:00:00'))) AS NoofHours
-- TIME != TIMESTAMP
TIME
skips date part.
SELECT TIME('2018-06-01 20:00:00'), TIME ('2018-06-02 06:00:00')
-- 20:00:00 06:00:00
Using TIMESTAMPDIFF
function:
SELECT TIMESTAMPDIFF(HOUR,
TIMESTAMP('2018-06-01 20:00:00'),
TIMESTAMP('2018-06-02 06:00:00')) AS NoofHours
Upvotes: 1