Oracle CALENDAR_SINCE Function

Show dates the way user interfaces do, such as 3 days ago, 6 weeks ago, or in 2 hours, directly in SQL with a long or short form.

User interfaces rarely show "2026-09-23 14:05:00" next to a comment or a notification; they show "3 days ago" or "in 2 hours". CALENDAR_SINCE, new in Oracle AI Database 26ai, returns that relative description of a date directly in SQL, in a long or a short form, so an application or report can display it without its own date logic.

Code for This Guide

The main example is in the examples/date-functions folder of the Oracle Database 26ai code repository on GitHub, with its output. The repository also has the NIMBUS sample schema in the setup/nimbus folder.

It comes from Oracle Database 26ai SQL and PL/SQL Book.

Syntax

Syntax:

calendar_since(dtexpr [, {'LONG' | 'SHORT'}])

dtexpr is the date or timestamp to describe, compared with now. LONG, the default, returns phrases such as 3 days ago; SHORT returns compact forms such as 3d. Future dates are described too, as in In 2 hours.

Long and Short Forms

This query describes four dates relative to the current date: three days ago, forty-five days ago, four hundred days ago, and two hours ahead.

Example:

select d, calendar_since(d) as long_form, calendar_since(d, 'SHORT') as short_form
from   (values (sysdate - 3), (sysdate - 45), (sysdate - 400), (sysdate + 2/24)) t (d);

Output:

D              LONG_FORM      SHORT_FORM
______________ ______________ _____________
23-SEP-2026    3 days ago     3d
12-AUG-2026    6 weeks ago    6w
22-AUG-2025    1 year ago     1y
26-SEP-2026    In 2 hours     in 2h

The dates in the first column depend on when the query runs; the descriptions do not. The unit grows with the distance: seconds under two minutes, then minutes, hours, days, weeks, months, and years. 45 days becomes 6 weeks, and 400 days 1 year.

Use It in Queries

Because it is a SQL function, CALENDAR_SINCE can describe a column for every row, for example calendar_since(created_at) next to each review or support ticket, or in a report of last logins. The value is rounded to one unit, so it is meant for display, not for calculations; use DATEDIFF or date subtraction to compute.

Things to Know

  • The result is computed at query time, so the same row reads differently tomorrow; do not store it.
  • For sorting, order by the underlying date, never by the text.

Related Guides

Conclusion

CALENDAR_SINCE describes a date relative to now in words, such as 3 days ago or In 2 hours, or in a short form such as 3d. Use it to display ages and countdowns in reports and applications, and keep calculations on the underlying dates.

Vinish Kapoor
Vinish Kapoor

An Oracle ACE, author of four books on Oracle APEX, SQL and PL/SQL, and Oracle Forms, and a software developer building Oracle database applications since 2001.

guest

0 Comments
Oldest
Newest Most Voted