mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-12-16 19:32:07 +00:00
1760247599
This commit adds tests of toYear/toYYYYMM for all of the date types, including Date, Date32, DateTime and DateTime64, to ensure the optimization for the date or datetime filter would not break the queries. The test data are especially selected around the margins of a year or a month.
90 lines
3.8 KiB
SQL
90 lines
3.8 KiB
SQL
CREATE TABLE source
|
|
(
|
|
`ts` DateTime('UTC'),
|
|
`n` Int32
|
|
)
|
|
ENGINE = MergeTree
|
|
PARTITION BY toYYYYMM(ts)
|
|
ORDER BY tuple();
|
|
|
|
INSERT INTO source values ('2021-12-31 23:00:00', 0);
|
|
|
|
SELECT * FROM source WHERE toYYYYMM(ts) = 202112;
|
|
SELECT * FROM source WHERE toYear(ts) = 2021;
|
|
|
|
DROP TABLE IF EXISTS source;
|
|
CREATE TABLE source
|
|
(
|
|
`dt` Date,
|
|
`ts` DateTime,
|
|
`dt_32` Date32,
|
|
`ts_64` DateTime64(3),
|
|
`n` Int32
|
|
)
|
|
ENGINE = MergeTree
|
|
PARTITION BY toYYYYMM(ts)
|
|
ORDER BY tuple();
|
|
|
|
INSERT INTO source values ('2022-12-31', '2022-12-31 23:59:59', '2022-12-31', '2022-12-31 23:59:59.123', 0);
|
|
INSERT INTO source values ('2023-01-01', '2023-01-01 00:00:00', '2023-01-01', '2023-01-01 00:00:00.000', 1);
|
|
INSERT INTO source values ('2023-12-01', '2023-12-01 00:00:00', '2023-12-01', '2023-12-01 00:00:00.000', 2);
|
|
INSERT INTO source values ('2023-12-31', '2023-12-31 23:59:59', '2023-12-31', '2023-12-31 23:59:59.123', 3);
|
|
INSERT INTO source values ('2024-01-01', '2024-01-01 00:00:00', '2024-01-01', '2024-01-01 00:00:00.000', 4);
|
|
|
|
SELECT 'Date';
|
|
SELECT count(*) FROM source WHERE toYYYYMM(dt) = 202312;
|
|
SELECT count(*) FROM source WHERE toYYYYMM(dt) <> 202312;
|
|
SELECT count(*) FROM source WHERE toYYYYMM(dt) < 202312;
|
|
SELECT count(*) FROM source WHERE toYYYYMM(dt) <= 202312;
|
|
SELECT count(*) FROM source WHERE toYYYYMM(dt) > 202312;
|
|
SELECT count(*) FROM source WHERE toYYYYMM(dt) >= 202312;
|
|
SELECT count(*) FROM source WHERE toYear(dt) = 2023;
|
|
SELECT count(*) FROM source WHERE toYear(dt) <> 2023;
|
|
SELECT count(*) FROM source WHERE toYear(dt) < 2023;
|
|
SELECT count(*) FROM source WHERE toYear(dt) <= 2023;
|
|
SELECT count(*) FROM source WHERE toYear(dt) > 2023;
|
|
SELECT count(*) FROM source WHERE toYear(dt) >= 2023;
|
|
|
|
SELECT 'DateTime';
|
|
SELECT count(*) FROM source WHERE toYYYYMM(ts) = 202312;
|
|
SELECT count(*) FROM source WHERE toYYYYMM(ts) <> 202312;
|
|
SELECT count(*) FROM source WHERE toYYYYMM(ts) < 202312;
|
|
SELECT count(*) FROM source WHERE toYYYYMM(ts) <= 202312;
|
|
SELECT count(*) FROM source WHERE toYYYYMM(ts) > 202312;
|
|
SELECT count(*) FROM source WHERE toYYYYMM(ts) >= 202312;
|
|
SELECT count(*) FROM source WHERE toYear(ts) = 2023;
|
|
SELECT count(*) FROM source WHERE toYear(ts) <> 2023;
|
|
SELECT count(*) FROM source WHERE toYear(ts) < 2023;
|
|
SELECT count(*) FROM source WHERE toYear(ts) <= 2023;
|
|
SELECT count(*) FROM source WHERE toYear(ts) > 2023;
|
|
SELECT count(*) FROM source WHERE toYear(ts) >= 2023;
|
|
|
|
SELECT 'Date32';
|
|
SELECT count(*) FROM source WHERE toYYYYMM(dt_32) = 202312;
|
|
SELECT count(*) FROM source WHERE toYYYYMM(dt_32) <> 202312;
|
|
SELECT count(*) FROM source WHERE toYYYYMM(dt_32) < 202312;
|
|
SELECT count(*) FROM source WHERE toYYYYMM(dt_32) <= 202312;
|
|
SELECT count(*) FROM source WHERE toYYYYMM(dt_32) > 202312;
|
|
SELECT count(*) FROM source WHERE toYYYYMM(dt_32) >= 202312;
|
|
SELECT count(*) FROM source WHERE toYear(dt_32) = 2023;
|
|
SELECT count(*) FROM source WHERE toYear(dt_32) <> 2023;
|
|
SELECT count(*) FROM source WHERE toYear(dt_32) < 2023;
|
|
SELECT count(*) FROM source WHERE toYear(dt_32) <= 2023;
|
|
SELECT count(*) FROM source WHERE toYear(dt_32) > 2023;
|
|
SELECT count(*) FROM source WHERE toYear(dt_32) >= 2023;
|
|
|
|
SELECT 'DateTime64';
|
|
SELECT count(*) FROM source WHERE toYYYYMM(ts_64) = 202312;
|
|
SELECT count(*) FROM source WHERE toYYYYMM(ts_64) <> 202312;
|
|
SELECT count(*) FROM source WHERE toYYYYMM(ts_64) < 202312;
|
|
SELECT count(*) FROM source WHERE toYYYYMM(ts_64) <= 202312;
|
|
SELECT count(*) FROM source WHERE toYYYYMM(ts_64) > 202312;
|
|
SELECT count(*) FROM source WHERE toYYYYMM(ts_64) >= 202312;
|
|
SELECT count(*) FROM source WHERE toYear(ts_64) = 2023;
|
|
SELECT count(*) FROM source WHERE toYear(ts_64) <> 2023;
|
|
SELECT count(*) FROM source WHERE toYear(ts_64) < 2023;
|
|
SELECT count(*) FROM source WHERE toYear(ts_64) <= 2023;
|
|
SELECT count(*) FROM source WHERE toYear(ts_64) > 2023;
|
|
SELECT count(*) FROM source WHERE toYear(ts_64) >= 2023;
|
|
DROP TABLE source;
|