Connect with Db2, Informix, Netezza, open source, and other data experts to gain value from your data, share insights, and solve problems.
Posted by: Serge RielauA co-worker just walked in and asked how to subtract timestamps in SQL.Easy, you just use the TIMESTAMPDIFF() function.Now, personally I just plain hate this function because it has some serious shortfalls:
CREATE OR REPLACE FUNCTION TIMESTAMPDIFF(stamp1 TIMESTAMP(12), stamp2 TIMESTAMP(12)) SPECIFIC TIMESTAMPDIFF RETURNS DECFLOAT(34) CONTAINS SQL NO EXTERNAL ACTION DETERMINISTIC RETURN ((CAST(JULIAN_DAY(stamp1) AS DECFLOAT(34)) * 86400 + EXTRACT(HOUR FROM stamp1) * 60 * 60 + EXTRACT(MINUTE FROM stamp1) * 60 + EXTRACT(SECOND FROM stamp1)) -(CAST(JULIAN_DAY(stamp2) AS DECFLOAT(34)) * 86400 + EXTRACT(HOUR FROM stamp2) * 60 * 60 + EXTRACT(MINUTE FROM stamp2) * 60 + EXTRACT(SECOND FROM stamp2))) / 86400; VALUES TIMESTAMPDIFF(CURRENT TIMESTAMP + 1 DAY, CURRENT TIMESTAMP - 1 DAY);1------------------------------------------ 2.000000000000 1 record(s) selected. VALUES TIMESTAMPDIFF(CURRENT TIMESTAMP + 6 HOURS, CURRENT TIMESTAMP);1------------------------------------------ 0.250000000000 1 record(s) selected.