Files
greptimedb/tests/cases/standalone/common/function/date.result
dennis zhuang 43f32f4499 feat: impl date_add/date_sub functions (#2881)
* 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
2023-12-07 03:02:15 +00:00

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