Important
Helios features are now enabled during weekly update windows and are no longer directly tied to SingleStore engine releases. Refer to the release notes to view the latest features available in your Helios cluster.
TRUNC
On this page
The TRUNC() function truncates a date using the specified format.
Returns a truncated date.
Syntax
TRUNC(DATE [,format])Arguments
-
date: Can be any valid date format, including:
DATE,TIMESTAMP,TIMESTAMP(6),DATETIME,DATETIME(6) -
format: The precision of the truncated date, as described in the table below:
|
Valid Format Parameters |
Description |
|---|---|
|
SYYYY, YYYY, YEAR, SYEAR, YYY, YY, Y |
Returns the first day of the year |
|
IYYY, IY, I |
Returns the first day of the ISO year |
|
Q |
Returns the first day of the quarter |
|
MONTH, MON, MM, RM |
Returns the first day of the month |
|
WW |
Returns the same day of the week as the first day of the year |
|
IW |
Returns the same day of the week as the first day of the calendar week as defined by the ISO 8601 standard, which is Monday |
|
W |
Returns the same day of the week as the first day of the month |
|
DDD, DD, J | |
|
DAY, DY, D |
Returns the starting day of the week, which is Sunday for non-ISO standard |
|
HH, HH12, HH24 |
Returns the date with a truncated hour |
|
MI |
Returns the date with a truncated minute |
Return Type
DATE
Examples
SELECT * FROM tr_date_tests;
+------------+
| datey |
+------------+
| 2019-09-10 |
+------------+YEAR FORMATS
SELECT TRUNC(datey, 'YYYY') FROM tr_date_tests;
+----------------------+
| TRUNC(datey, 'YYYY') |
+----------------------+
| 2019-01-01 00:00:00 |
+----------------------+SELECT TRUNC(datey, 'SYYYY') FROM tr_date_tests;
+-----------------------+
| TRUNC(datey, 'SYYYY') |
+-----------------------+
| 2019-01-01 00:00:00 |
+-----------------------+SELECT TRUNC(datey, 'YEAR') FROM tr_date_tests;
+----------------------+
| TRUNC(datey, 'YEAR') |
+----------------------+
| 2019-01-01 00:00:00 |
+----------------------+SELECT TRUNC(datey, 'SYEAR') FROM tr_date_tests;
+-----------------------+
| TRUNC(datey, 'SYEAR') |
+-----------------------+
| 2019-01-01 00:00:00 |
+-----------------------+SELECT TRUNC(datey, 'YYY') FROM tr_date_tests;
+---------------------+
| TRUNC(datey, 'YYY') |
+---------------------+
| 2019-01-01 00:00:00 |
+---------------------+SELECT TRUNC(datey, 'YY') FROM tr_date_tests;
+---------------------+
| TRUNC(datey, 'YY') |
+---------------------+
| 2019-01-01 00:00:00 |
+---------------------+SELECT TRUNC(datey, 'Y') FROM tr_date_tests;
+---------------------+
| TRUNC(datey, 'Y') |
+---------------------+
| 2019-01-01 00:00:00 |
+---------------------+ISO YEAR FORMAT
SELECT TRUNC(datey, 'IYYY') FROM tr_date_tests;
+----------------------+
| TRUNC(datey, 'IYYY') |
+----------------------+
| 2018-12-31 00:00:00 |
+----------------------+SELECT TRUNC(datey, 'IY') FROM tr_date_tests;
+---------------------+
| TRUNC(datey, 'IY') |
+---------------------+
| 2018-12-31 00:00:00 |
+---------------------+SELECT TRUNC(datey, 'I') FROM tr_date_tests;
+---------------------+
| TRUNC(datey, 'I') |
+---------------------+
| 2018-12-31 00:00:00 |
+---------------------+QUARTER
SELECT TRUNC(datey, 'Q') FROM tr_date_tests;
+---------------------+
| TRUNC(datey, 'Q') |
+---------------------+
| 2019-07-01 00:00:00 |
+---------------------+MONTH
SELECT TRUNC(datey, 'MONTH') FROM tr_date_tests;
+-----------------------+
| TRUNC(datey, 'MONTH') |
+-----------------------+
| 2019-09-01 00:00:00 |
+-----------------------+SELECT TRUNC(datey, 'MON') FROM tr_date_tests;
+---------------------+
| TRUNC(datey, 'MON') |
+---------------------+
| 2019-09-01 00:00:00 |
+---------------------+SELECT TRUNC(datey, 'MM') FROM tr_date_tests;
+---------------------+
| TRUNC(datey, 'MM') |
+---------------------+
| 2019-09-01 00:00:00 |
+---------------------+SELECT TRUNC(datey, 'RM') FROM tr_date_tests;
+---------------------+
| TRUNC(datey, 'RM') |
+---------------------+
| 2019-09-01 00:00:00 |
+---------------------+DAY
SAME DAY
SELECT TRUNC(datey, 'DDD') FROM tr_date_tests;
+---------------------+
| TRUNC(datey, 'DDD') |
+---------------------+
| 2019-09-10 00:00:00 |
+---------------------+SELECT TRUNC(datey, 'DD') FROM tr_date_tests;
+---------------------+
| TRUNC(datey, 'DD') |
+---------------------+
| 2019-09-10 00:00:00 |
+---------------------+SELECT TRUNC(datey, 'J') FROM tr_date_tests;
+---------------------+
| TRUNC(datey, 'J') |
+---------------------+
| 2019-09-10 00:00:00 |
+---------------------+FIRST DAY OF WEEK
SELECT TRUNC(datey, 'DAY') FROM tr_date_tests;
+---------------------+
| TRUNC(datey, 'DAY') |
+---------------------+
| 2019-09-08 00:00:00 |
+---------------------+SELECT TRUNC(datey, 'DY') FROM tr_date_tests;
+---------------------+
| TRUNC(datey, 'DY') |
+---------------------+
| 2019-09-08 00:00:00 |
+---------------------+SELECT TRUNC(datey, 'D') FROM tr_date_tests;
+---------------------+
| TRUNC(datey, 'D') |
+---------------------+
| 2019-09-08 00:00:00 |
+---------------------+HOUR
SELECT * FROM tr_date_tests;
+---------------------+
| datey |
+---------------------+
| 2019-09-10 11:17:22 |
+---------------------+SELECT TRUNC(datey, 'HH') FROM tr_date_tests;
+---------------------+
| TRUNC(datey, 'HH') |
+---------------------+
| 2019-09-10 00:00:00 |
+---------------------+SELECT TRUNC(datey, 'HH12') FROM tr_date_tests;
+----------------------+
| TRUNC(datey, 'HH12') |
+----------------------+
| 2019-09-10 00:00:00 |
+----------------------+MINUTE
SELECT TRUNC(datey, 'MI') FROM tr_date_tests;
+---------------------+
| TRUNC(datey, 'MI') |
+---------------------+
| 2019-09-10 11:17:00 |
+---------------------+WEEK
WW returns the same day within the week as the first day of the year.
SELECT TRUNC(TO_DATE('2019-09-17', 'YYYY-MM-DD'), 'WW');
+--------------------------------------------------+
| TRUNC(TO_DATE('2019-09-17', 'YYYY-MM-DD'), 'WW') |
+--------------------------------------------------+
| 2019-09-17 00:00:00 |
+--------------------------------------------------+Similarly, for ISO week, this example returns the same day within that week of the ISO year, which was Monday.
SELECT TRUNC(TO_DATE('2019-09-17', 'YYYY-MM-DD'), 'IW');
+--------------------------------------------------+
| TRUNC(TO_DATE('2019-09-17', 'YYYY-MM-DD'), 'IW') |
+--------------------------------------------------+
| 2019-09-16 00:00:00 |
+--------------------------------------------------+W returns the day within that week that aligns with the first day of the month.
SELECT TRUNC(TO_DATE('2019-09-17', 'YYYY-MM-DD'), 'W');
+-------------------------------------------------+
| TRUNC(TO_DATE('2019-09-17', 'YYYY-MM-DD'), 'W') |
+-------------------------------------------------+
| 2019-09-15 00:00:00 |
+-------------------------------------------------+Using an Alternative Date Syntax
SELECT TRUNC(TO_DATE('17/09/19', 'DD/MM/YY'), 'W');
+---------------------------------------------+
| TRUNC(TO_DATE('17/09/19', 'DD/MM/YY'), 'W') |
+---------------------------------------------+
| 2019-09-15 00:00:00 |
+---------------------------------------------+Last modified: