mirror of
https://github.com/GreptimeTeam/greptimedb.git
synced 2026-01-10 15:22:56 +00:00
* feat: adds date_add and date_sub function * test: add date function * fix: adds interval to date returns wrong result * fix: header * fix: typo * fix: timestamp resolution * fix: capacity * chore: apply suggestion * fix: wrong behavior when adding intervals to timestamp, date and datetime * chore: remove unused error * test: refactor and add some tests
165 lines
7.7 KiB
Plaintext
165 lines
7.7 KiB
Plaintext
SELECT date_add('2023-12-06 07:39:46.222'::TIMESTAMP_MS, INTERVAL '5 day');
|
|
|
|
+----------------------------------------------------------------------------------------+
|
|
| date_add(Utf8("2023-12-06 07:39:46.222"),IntervalMonthDayNano("92233720368547758080")) |
|
|
+----------------------------------------------------------------------------------------+
|
|
| 2023-12-11T07:39:46.222 |
|
|
+----------------------------------------------------------------------------------------+
|
|
|
|
SELECT date_add('2023-12-06 07:39:46.222'::TIMESTAMP_MS, '5 day');
|
|
|
|
+---------------------------------------------------------+
|
|
| date_add(Utf8("2023-12-06 07:39:46.222"),Utf8("5 day")) |
|
|
+---------------------------------------------------------+
|
|
| 2023-12-11T07:39:46.222 |
|
|
+---------------------------------------------------------+
|
|
|
|
SELECT date_add('2023-12-06'::DATE, INTERVAL '3 month 5 day');
|
|
|
|
+-------------------------------------------------------------------------------------+
|
|
| date_add(Utf8("2023-12-06"),IntervalMonthDayNano("237684487635026733149179609088")) |
|
|
+-------------------------------------------------------------------------------------+
|
|
| 2024-03-11 |
|
|
+-------------------------------------------------------------------------------------+
|
|
|
|
SELECT date_add('2023-12-06'::DATE, '3 month 5 day');
|
|
|
|
+----------------------------------------------------+
|
|
| date_add(Utf8("2023-12-06"),Utf8("3 month 5 day")) |
|
|
+----------------------------------------------------+
|
|
| 2024-03-11 |
|
|
+----------------------------------------------------+
|
|
|
|
SELECT date_sub('2023-12-06 07:39:46.222'::TIMESTAMP_MS, INTERVAL '5 day');
|
|
|
|
+----------------------------------------------------------------------------------------+
|
|
| date_sub(Utf8("2023-12-06 07:39:46.222"),IntervalMonthDayNano("92233720368547758080")) |
|
|
+----------------------------------------------------------------------------------------+
|
|
| 2023-12-01T07:39:46.222 |
|
|
+----------------------------------------------------------------------------------------+
|
|
|
|
SELECT date_sub('2023-12-06 07:39:46.222'::TIMESTAMP_MS, '5 day');
|
|
|
|
+---------------------------------------------------------+
|
|
| date_sub(Utf8("2023-12-06 07:39:46.222"),Utf8("5 day")) |
|
|
+---------------------------------------------------------+
|
|
| 2023-12-01T07:39:46.222 |
|
|
+---------------------------------------------------------+
|
|
|
|
SELECT date_sub('2023-12-06'::DATE, INTERVAL '3 month 5 day');
|
|
|
|
+-------------------------------------------------------------------------------------+
|
|
| date_sub(Utf8("2023-12-06"),IntervalMonthDayNano("237684487635026733149179609088")) |
|
|
+-------------------------------------------------------------------------------------+
|
|
| 2023-09-01 |
|
|
+-------------------------------------------------------------------------------------+
|
|
|
|
SELECT date_sub('2023-12-06'::DATE, '3 month 5 day');
|
|
|
|
+----------------------------------------------------+
|
|
| date_sub(Utf8("2023-12-06"),Utf8("3 month 5 day")) |
|
|
+----------------------------------------------------+
|
|
| 2023-09-01 |
|
|
+----------------------------------------------------+
|
|
|
|
CREATE TABLE dates(d DATE, ts timestamp time index);
|
|
|
|
Affected Rows: 0
|
|
|
|
INSERT INTO dates VALUES ('1992-01-01'::DATE, 1);
|
|
|
|
Affected Rows: 1
|
|
|
|
INSERT INTO dates VALUES ('1993-12-30'::DATE, 2);
|
|
|
|
Affected Rows: 1
|
|
|
|
INSERT INTO dates VALUES ('2023-12-06'::DATE, 3);
|
|
|
|
Affected Rows: 1
|
|
|
|
SELECT date_add(d, INTERVAL '1 year 2 month 3 day') from dates;
|
|
|
|
+---------------------------------------------------------------------------+
|
|
| date_add(dates.d,IntervalMonthDayNano("1109194275255040958530743959552")) |
|
|
+---------------------------------------------------------------------------+
|
|
| 1993-03-04 |
|
|
| 1995-03-03 |
|
|
| 2025-02-09 |
|
|
+---------------------------------------------------------------------------+
|
|
|
|
SELECT date_add(d, '1 year 2 month 3 day') from dates;
|
|
|
|
+------------------------------------------------+
|
|
| date_add(dates.d,Utf8("1 year 2 month 3 day")) |
|
|
+------------------------------------------------+
|
|
| 1993-03-04 |
|
|
| 1995-03-03 |
|
|
| 2025-02-09 |
|
|
+------------------------------------------------+
|
|
|
|
SELECT date_add(ts, INTERVAL '1 year 2 month 3 day') from dates;
|
|
|
|
+----------------------------------------------------------------------------+
|
|
| date_add(dates.ts,IntervalMonthDayNano("1109194275255040958530743959552")) |
|
|
+----------------------------------------------------------------------------+
|
|
| 1971-03-04T00:00:00.001 |
|
|
| 1971-03-04T00:00:00.002 |
|
|
| 1971-03-04T00:00:00.003 |
|
|
+----------------------------------------------------------------------------+
|
|
|
|
SELECT date_add(ts, '1 year 2 month 3 day') from dates;
|
|
|
|
+-------------------------------------------------+
|
|
| date_add(dates.ts,Utf8("1 year 2 month 3 day")) |
|
|
+-------------------------------------------------+
|
|
| 1971-03-04T00:00:00.001 |
|
|
| 1971-03-04T00:00:00.002 |
|
|
| 1971-03-04T00:00:00.003 |
|
|
+-------------------------------------------------+
|
|
|
|
SELECT date_sub(d, INTERVAL '1 year 2 month 3 day') from dates;
|
|
|
|
+---------------------------------------------------------------------------+
|
|
| date_sub(dates.d,IntervalMonthDayNano("1109194275255040958530743959552")) |
|
|
+---------------------------------------------------------------------------+
|
|
| 1990-10-29 |
|
|
| 1992-10-27 |
|
|
| 2022-10-03 |
|
|
+---------------------------------------------------------------------------+
|
|
|
|
SELECT date_sub(d, '1 year 2 month 3 day') from dates;
|
|
|
|
+------------------------------------------------+
|
|
| date_sub(dates.d,Utf8("1 year 2 month 3 day")) |
|
|
+------------------------------------------------+
|
|
| 1990-10-29 |
|
|
| 1992-10-27 |
|
|
| 2022-10-03 |
|
|
+------------------------------------------------+
|
|
|
|
SELECT date_sub(ts, INTERVAL '1 year 2 month 3 day') from dates;
|
|
|
|
+----------------------------------------------------------------------------+
|
|
| date_sub(dates.ts,IntervalMonthDayNano("1109194275255040958530743959552")) |
|
|
+----------------------------------------------------------------------------+
|
|
| 1968-10-29T00:00:00.001 |
|
|
| 1968-10-29T00:00:00.002 |
|
|
| 1968-10-29T00:00:00.003 |
|
|
+----------------------------------------------------------------------------+
|
|
|
|
SELECT date_sub(ts, '1 year 2 month 3 day') from dates;
|
|
|
|
+-------------------------------------------------+
|
|
| date_sub(dates.ts,Utf8("1 year 2 month 3 day")) |
|
|
+-------------------------------------------------+
|
|
| 1968-10-29T00:00:00.001 |
|
|
| 1968-10-29T00:00:00.002 |
|
|
| 1968-10-29T00:00:00.003 |
|
|
+-------------------------------------------------+
|
|
|
|
DROP TABLE dates;
|
|
|
|
Affected Rows: 0
|
|
|