datediff function

The datediff(datepart, start, end) function returns the difference between two date, time or timestamp expressions based on the specified date or time part.

Signatures

Parameter Type Description
datepart text The date or time part to return. Must be one of datepart specifiers.
start date, time, timestamp, timestamptz The date, time, or timestamp expression to start measuring from.
end date, time, timestamp, timestamptz The date, time, or timestamp expression to measuring until.

datepart specifiers

Specifier Description
millenniums, millennium, millennia, mil Millennia
centuries, century, cent, c Centuries
decades, decade, decs, dec Decades
years, year, yrs, yr, y Years
quarter, qtr Quarters
months, month, mons, mon Months
weeks, week, w Weeks
days, day, d Days
hours, hour, hrs, hr, h Hours
minutes, minute, mins, min, m Minutes
seconds, second, secs, sec, s Seconds
milliseconds, millisecond, mseconds, msecs, msec, ms Milliseconds
microseconds, microsecond, useconds, usecs, usec, us Microseconds

Examples

To calculate the difference between two dates in millennia:

SELECT datediff('millennia', '2000-12-31', '2001-01-01') as d;
  d
-----
  1

Even though the difference between 2000-12-31 and 2001-01-01 is a single day, a millennium boundary is crossed from one date to the other, so the result is 1.

To see how this function handles leap years:

SELECT datediff('day', '2004-02-28', '2004-03-01') as leap;
    leap
------------
     2

SELECT datediff('day', '2005-02-28', '2005-03-01') as non_leap;
  non_leap
------------
     1

In the statement that uses a leap year (2004), the number of day boundaries crossed is 2. When using a non-leap year (2005), only 1 day boundary is crossed.

Back to top ↑