@@ -8,7 +8,7 @@ This page documents TEMPORAL functions.
88
99---
1010
11- ### Function: CURRENT_TIMESTAMP (Aliases : NOW, CURRENT_DATETIME)
11+ ### Function: CURRENT_TIMESTAMP (Alias : NOW, CURRENT_DATETIME)
1212** Description:**
1313Returns current datetime (ZonedDateTime) in UTC.
1414
@@ -26,7 +26,7 @@ SELECT CURRENT_TIMESTAMP AS now;
2626
2727---
2828
29- ### Function: CURRENT_DATE (Aliases : CURDATE, TODAY)
29+ ### Function: CURRENT_DATE (Alias : CURDATE, TODAY)
3030** Description:**
3131Returns current date as ` DATE ` .
3232
@@ -44,7 +44,7 @@ SELECT CURRENT_DATE AS today;
4444
4545---
4646
47- ### Function: CURRENT_TIME (Aliases : CURTIME)
47+ ### Function: CURRENT_TIME (Alias : CURTIME)
4848** Description:**
4949Returns current time-of-day.
5050
@@ -62,12 +62,31 @@ SELECT CURRENT_TIME AS t;
6262
6363---
6464
65- ### Function: DATE_ADD / DATEADD (Aliases: DATEADD)
65+ ### Function: INTERVAL
66+ ** Description:**
67+ Literal syntax for time intervals.
68+
69+ ** Inputs:**
70+ - n (` INT ` )
71+ - ` UNIT ` (` YEAR ` |` QUARTER ` |` MONTH ` |` WEEK ` |` DAY ` |` HOUR ` |` MINUTE ` |` SECOND ` |` MILLISECOND ` |` MICROSECOND ` |` NANOSECOND ` )
72+
73+ ** Output:**
74+ - ` INTERVAL `
75+ - Note: ` INTERVAL ` is not a standalone type, it can only be used as part of date/datetime arithmetic functions.
76+
77+ ** Example:**
78+ ``` sql
79+ SELECT DATE_ADD(' 2025-01-10' ::DATE , INTERVAL 1 MONTH);
80+ -- Result: 2025-02-10
81+ ```
82+
83+ ### Function: DATE_ADD (Alias: DATEADD)
6684** Description:**
6785Adds interval to ` DATE ` .
6886
6987** Inputs:**
70- - ` date_expr ` (` DATE ` ), ` INTERVAL n UNIT ` (` YEAR ` |` QUARTER ` |` MONTH ` |` WEEK ` |` DAY ` )
88+ - ` date_expr ` (` DATE ` )
89+ - ` INTERVAL ` n (` INT ` ) ` UNIT ` (` YEAR ` |` QUARTER ` |` MONTH ` |` WEEK ` |` DAY ` )
7190
7291** Output:**
7392- ` DATE `
@@ -80,12 +99,13 @@ SELECT DATE_ADD('2025-01-10'::DATE, INTERVAL 1 MONTH) AS next_month;
8099
81100---
82101
83- ### Function: DATE_SUB / DATESUB
102+ ### Function: DATE_SUB (Alias: DATESUB)
84103** Description:**
85104Subtract interval from ` DATE ` .
86105
87106** Inputs:**
88- - ` date_expr ` (` DATE ` ), ` INTERVAL n UNIT ` (` YEAR ` |` QUARTER ` |` MONTH ` |` WEEK ` |` DAY ` )
107+ - ` date_expr ` (` DATE ` )
108+ - ` INTERVAL ` n (` INT ` ) ` UNIT ` (` YEAR ` |` QUARTER ` |` MONTH ` |` WEEK ` |` DAY ` )
89109
90110** Output:**
91111- ` DATE `
@@ -98,12 +118,13 @@ SELECT DATE_SUB('2025-01-10'::DATE, INTERVAL 7 DAY) AS week_before;
98118
99119---
100120
101- ### Function: DATETIME_ADD / DATETIMEADD
121+ ### Function: DATETIME_ADD (Alias: DATETIMEADD)
102122** Description:**
103123Adds interval to ` DATETIME ` / ` TIMESTAMP `
104124
105125** Inputs:**
106- - ` datetime_expr ` (` DATETIME ` ), ` INTERVAL n UNIT ` (` YEAR ` |` QUARTER ` |` MONTH ` |` WEEK ` |` DAY ` |` HOUR ` |` MINUTE ` |` SECOND ` )
126+ - ` datetime_expr ` (` DATETIME ` )
127+ - ` INTERVAL ` n (` INT ` ) ` UNIT ` (` YEAR ` |` QUARTER ` |` MONTH ` |` WEEK ` |` DAY ` |` HOUR ` |` MINUTE ` |` SECOND ` )
107128
108129** Output:**
109130- ` DATETIME `
@@ -116,12 +137,13 @@ SELECT DATETIME_ADD('2025-01-10T12:00:00Z'::TIMESTAMP, INTERVAL 1 DAY) AS tomorr
116137
117138---
118139
119- ### Function: DATETIME_SUB / DATETIMESUB
140+ ### Function: DATETIME_SUB (Alias: DATETIMESUB)
120141** Description:**
121142Subtract interval from ` DATETIME ` / ` TIMESTAMP ` .
122143
123144** Inputs:**
124- - ` datetime_expr ` , ` INTERVAL n UNIT ` (` YEAR ` |` QUARTER ` |` MONTH ` |` WEEK ` |` DAY ` |` HOUR ` |` MINUTE ` |` SECOND ` )
145+ - ` datetime_expr `
146+ - ` INTERVAL ` n (` INT ` ) ` UNIT ` (` YEAR ` |` QUARTER ` |` MONTH ` |` WEEK ` |` DAY ` |` HOUR ` |` MINUTE ` |` SECOND ` )
125147
126148** Output:**
127149- ` DATETIME `
@@ -134,12 +156,14 @@ SELECT DATETIME_SUB('2025-01-10T12:00:00Z'::TIMESTAMP, INTERVAL 2 HOUR) AS earli
134156
135157---
136158
137- ### Function: DATEDIFF / DATE_DIFF
159+ ### Function: DATEDIFF (Alias: DATE_DIFF)
138160** Description:**
139161Difference between 2 dates (date1 - date2) in the specified time unit.
140162
141163** Inputs:**
142- - ` date1 ` (` DATE ` or ` DATETIME ` ), ` date2 ` (` DATE ` or ` DATETIME ` ), ` unit ` (` YEAR ` |` QUARTER ` |` MONTH ` |` WEEK ` |` DAY ` |` HOUR ` |` MINUTE ` |` SECOND ` )
164+ - ` date1 ` (` DATE ` or ` DATETIME ` )
165+ - ` date2 ` (` DATE ` or ` DATETIME ` ),
166+ - optional ` unit ` (` YEAR ` |` QUARTER ` |` MONTH ` |` WEEK ` |` DAY ` |` HOUR ` |` MINUTE ` |` SECOND ` ), ` DAY ` by default
143167
144168** Output:**
145169- ` BIGINT `
@@ -154,10 +178,12 @@ SELECT DATEDIFF('2025-01-10'::DATE, '2025-01-01'::DATE) AS diff;
154178
155179### Function: DATE_FORMAT
156180** Description:**
157- Format ` DATE ` / ` DATETIME ` to ` VARCHAR ` .
181+ Format ` DATE ` to ` VARCHAR ` .
158182
159183** Inputs:**
160- - ` date_expr ` , ` pattern `
184+ - ` date_expr ` (` DATE ` )
185+ - ` pattern ` (` VARCHAR ` )
186+ - Note: Patterns follow Java DateTimeFormatter syntax (not MySQL-style).
161187
162188** Output:**
163189- ` VARCHAR `
@@ -175,7 +201,9 @@ SELECT DATE_FORMAT('2025-01-10'::DATE, 'yyyy-MM-dd') AS fmt;
175201Parse ` VARCHAR ` into ` DATE ` .
176202
177203** Inputs:**
178- - ` VARCHAR ` , ` pattern `
204+ - ` VARCHAR `
205+ - ` pattern ` (` VARCHAR ` )
206+ - Note: Patterns follow Java DateTimeFormatter syntax (not MySQL-style).
179207
180208** Output:**
181209- ` DATE `
@@ -193,7 +221,9 @@ SELECT DATE_PARSE('2025-01-10','yyyy-MM-dd') AS d;
193221Parse ` VARCHAR ` into ` DATETIME ` / ` TIMESTAMP ` .
194222
195223** Inputs:**
196- - ` VARCHAR ` , ` pattern `
224+ - ` VARCHAR `
225+ - ` pattern ` (` VARCHAR ` )
226+ - Note: Patterns follow Java DateTimeFormatter syntax (not MySQL-style).
197227
198228** Output:**
199229- ` DATETIME `
@@ -210,7 +240,10 @@ SELECT DATETIME_PARSE('2025-01-10T12:00:00Z','yyyy-MM-dd''T''HH:mm:ssZ') AS dt;
210240** Description:**
211241Format ` DATETIME ` / ` TIMESTAMP ` to ` VARCHAR ` with pattern.
212242
213- ** Inputs:** ` datetime_expr ` , ` pattern `
243+ ** Inputs:**
244+ - ` datetime_expr ` (` DATETIME ` or ` TIMESTAMP ` )
245+ - ` pattern ` (` VARCHAR ` )
246+ - Note: Patterns follow Java DateTimeFormatter syntax (not MySQL-style).
214247
215248** Output:**
216249- ` VARCHAR `
@@ -224,10 +257,11 @@ SELECT DATETIME_FORMAT('2025-01-10T12:00:00Z'::TIMESTAMP,'yyyy-MM-dd HH:mm:ss')
224257
225258### Function: DATE_TRUNC
226259** Description:**
227- Truncate date/datetime to a ` unit ` ( ` YEAR ` | ` QUARTER ` | ` MONTH ` | ` WEEK ` | ` DAY ` | ` HOUR ` | ` MINUTE ` | ` SECOND ` ) .
260+ Truncate date/datetime to a ` unit ` .
228261
229262** Inputs:**
230- - ` date_or_datetime_expr ` , ` unit `
263+ - ` date_or_datetime_expr ` (` DATE ` or ` DATETIME ` )
264+ - ` unit ` (` YEAR ` |` QUARTER ` |` MONTH ` |` WEEK ` |` DAY ` |` HOUR ` |` MINUTE ` |` SECOND ` )
231265
232266** Output:**
233267- ` DATE ` or ` DATETIME `
@@ -245,7 +279,7 @@ SELECT DATE_TRUNC('2025-01-15'::DATE, MONTH) AS start_month;
245279Extract field from date or datetime.
246280
247281** Inputs:**
248- - ` unit FROM date_expr `
282+ - ` unit ` ( ` YEAR ` | ` QUARTER ` | ` MONTH ` | ` WEEK ` | ` DAY ` | ` HOUR ` | ` MINUTE ` | ` SECOND ` ) ` FROM ` ` date_expr ` ( ` DATE ` or ` DATETIME ` )
249283
250284** Output:**
251285- ` INT ` / ` BIGINT `
@@ -263,7 +297,7 @@ SELECT EXTRACT(YEAR FROM '2025-01-10T12:00:00Z'::TIMESTAMP) AS y;
263297Last day of month for a date.
264298
265299** Inputs:**
266- - ` date_expr `
300+ - ` date_expr ` ( ` DATE ` )
267301
268302** Output:**
269303- ` DATE `
@@ -281,7 +315,7 @@ SELECT LAST_DAY('2025-02-15'::DATE) AS ld;
281315ISO week number (1..53)
282316
283317** Inputs:**
284- - ` date_expr `
318+ - ` date_expr ` ( ` DATE ` )
285319
286320** Output:**
287321- ` INT `
@@ -299,7 +333,7 @@ SELECT WEEK('2025-01-01'::DATE) AS w;
299333Quarter number (1..4)
300334
301335** Inputs:**
302- - ` date_expr `
336+ - ` date_expr ` ( ` DATE ` )
303337
304338** Output:**
305339- ` INT `
@@ -317,7 +351,7 @@ SELECT QUARTER('2025-05-10'::DATE) AS q;
317351Sub-second extraction.
318352
319353** Inputs:**
320- - ` datetime_expr `
354+ - ` datetime_expr ` ( ` DATETIME ` or ` TIMESTAMP ` )
321355
322356** Output:**
323357- ` INT `
@@ -335,7 +369,7 @@ SELECT MILLISECOND('2025-01-01T12:00:00.123Z'::TIMESTAMP) AS ms;
335369Days since epoch.
336370
337371** Inputs:**
338- - ` date_expr `
372+ - ` date_expr ` ( ` DATE ` )
339373
340374** Output:**
341375- ` BIGINT `
@@ -348,19 +382,19 @@ SELECT EPOCHDAY('1970-01-02'::DATE) AS d;
348382
349383---
350384
351- ### Function: OFFSET / OFFSET_SECONDS
385+ ### Function: OFFSET_SECONDS
352386** Description:**
353387Timezone offset in seconds.
354388
355389** Inputs:**
356- - ` timestamp_expr `
390+ - ` timestamp_expr ` ( ` TIMESTAMP ` with timezone)
357391
358392** Output:**
359393- ` INT `
360394
361395** Example:**
362396``` sql
363- SELECT OFFSET (' 2025-01-01T12:00:00+02:00' ::TIMESTAMP ) AS off;
397+ SELECT OFFSET_SECONDS (' 2025-01-01T12:00:00+02:00' ::TIMESTAMP ) AS off;
364398-- Result: 7200
365399```
366400
0 commit comments