v1-0001-Add-ago-interval-function-to-subtract-interval-fr.patch
application/octet-stream
Filename: v1-0001-Add-ago-interval-function-to-subtract-interval-fr.patch
Type: application/octet-stream
Part: 0
Message:
ago(interval) → timestamptz
From f28d87abf7f16ca3aa21eb42f0f8d05d69868dbe Mon Sep 17 00:00:00 2001
From: Florents Tselai <florents.tselai@gmail.com>
Date: Mon, 3 Nov 2025 22:20:18 +0100
Subject: [PATCH v1] Add ago(interval) function to subtract interval from
current timestamp
---
doc/src/sgml/func/func-datetime.sgml | 16 ++++++++++++++++
src/backend/catalog/system_functions.sql | 6 ++++++
src/include/catalog/pg_proc.dat | 3 +++
3 files changed, 25 insertions(+)
diff --git a/doc/src/sgml/func/func-datetime.sgml b/doc/src/sgml/func/func-datetime.sgml
index 8cd7150b0d3..c0b9830b638 100644
--- a/doc/src/sgml/func/func-datetime.sgml
+++ b/doc/src/sgml/func/func-datetime.sgml
@@ -359,6 +359,22 @@
</para></entry>
</row>
+ <row>
+ <entry role="func_table_entry">
+ <para role="func_signature">
+ <function>ago</function> ( <type>interval</type> )
+ <returnvalue>timestamptz</returnvalue>
+ </para>
+ <para>
+ Returns the current timestamp minus the specified interval.
+ </para>
+ <para>
+ <literal>ago(interval '1 hour')</literal>
+ <returnvalue>2025-11-03 14:42:31.123456+01</returnvalue>
+ </para>
+ </entry>
+ </row>
+
<row>
<entry role="func_table_entry"><para role="func_signature">
<indexterm>
diff --git a/src/backend/catalog/system_functions.sql b/src/backend/catalog/system_functions.sql
index 2d946d6d9e9..c035d509608 100644
--- a/src/backend/catalog/system_functions.sql
+++ b/src/backend/catalog/system_functions.sql
@@ -127,6 +127,12 @@ CREATE OR REPLACE FUNCTION age(timestamp)
STABLE PARALLEL SAFE STRICT COST 1
RETURN age(cast(current_date as timestamp), $1);
+CREATE OR REPLACE FUNCTION ago(interval)
+ RETURNS timestamptz
+ LANGUAGE sql
+ STABLE PARALLEL SAFE STRICT COST 1
+RETURN current_timestamp - $1;
+
CREATE OR REPLACE FUNCTION date_part(text, date)
RETURNS double precision
LANGUAGE sql
diff --git a/src/include/catalog/pg_proc.dat b/src/include/catalog/pg_proc.dat
index 9121a382f76..58df79bf163 100644
--- a/src/include/catalog/pg_proc.dat
+++ b/src/include/catalog/pg_proc.dat
@@ -6481,6 +6481,9 @@
proname => 'age', prolang => 'sql', provolatile => 's',
prorettype => 'interval', proargtypes => 'timestamp',
prosrc => 'see system_functions.sql' },
+{ oid => '2173', descr => 'current timestamp minus the specified interval', proname => 'ago', prolang => 'sql',
+ provolatile => 's', prorettype => 'timestamptz', proargtypes => 'interval',
+ prosrc => 'see system_functions.sql' },
{ oid => '2069', descr => 'adjust timestamp to new time zone',
proname => 'timezone', prorettype => 'timestamptz',
--
2.49.0