mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-27 10:02:01 +00:00
Merge remote-tracking branch 'upstream/master' into group_by_all
This commit is contained in:
commit
e08c33ac85
2
.github/workflows/cancel.yml
vendored
2
.github/workflows/cancel.yml
vendored
@ -6,7 +6,7 @@ env:
|
|||||||
|
|
||||||
on: # yamllint disable-line rule:truthy
|
on: # yamllint disable-line rule:truthy
|
||||||
workflow_run:
|
workflow_run:
|
||||||
workflows: ["PullRequestCI", "ReleaseCI", "DocsCheck", "BackportPR"]
|
workflows: ["PullRequestCI", "ReleaseBranchCI", "DocsCheck", "BackportPR"]
|
||||||
types:
|
types:
|
||||||
- requested
|
- requested
|
||||||
jobs:
|
jobs:
|
||||||
|
@ -105,7 +105,7 @@ ninja
|
|||||||
Example for Fedora Rawhide:
|
Example for Fedora Rawhide:
|
||||||
``` bash
|
``` bash
|
||||||
sudo yum update
|
sudo yum update
|
||||||
yum --nogpg install git cmake make clang-c++ python3
|
sudo yum --nogpg install git cmake make clang python3 ccache
|
||||||
git clone --recursive https://github.com/ClickHouse/ClickHouse.git
|
git clone --recursive https://github.com/ClickHouse/ClickHouse.git
|
||||||
mkdir build && cd build
|
mkdir build && cd build
|
||||||
cmake ../ClickHouse
|
cmake ../ClickHouse
|
||||||
|
@ -7,18 +7,26 @@ title: "Manipulating Projections"
|
|||||||
|
|
||||||
The following operations with [projections](../../../engines/table-engines/mergetree-family/mergetree.md#projections) are available:
|
The following operations with [projections](../../../engines/table-engines/mergetree-family/mergetree.md#projections) are available:
|
||||||
|
|
||||||
- `ALTER TABLE [db].name ADD PROJECTION name ( SELECT <COLUMN LIST EXPR> [GROUP BY] [ORDER BY] )` - Adds projection description to tables metadata.
|
## ADD PROJECTION
|
||||||
|
|
||||||
- `ALTER TABLE [db].name DROP PROJECTION name` - Removes projection description from tables metadata and deletes projection files from disk. Implemented as a [mutation](../../../sql-reference/statements/alter/index.md#mutations).
|
`ALTER TABLE [db].name ADD PROJECTION name ( SELECT <COLUMN LIST EXPR> [GROUP BY] [ORDER BY] )` - Adds projection description to tables metadata.
|
||||||
|
|
||||||
- `ALTER TABLE [db.]table MATERIALIZE PROJECTION name IN PARTITION partition_name` - The query rebuilds the projection `name` in the partition `partition_name`. Implemented as a [mutation](../../../sql-reference/statements/alter/index.md#mutations).
|
## DROP PROJECTION
|
||||||
|
|
||||||
- `ALTER TABLE [db.]table CLEAR PROJECTION name IN PARTITION partition_name` - Deletes projection files from disk without removing description. Implemented as a [mutation](../../../sql-reference/statements/alter/index.md#mutations).
|
`ALTER TABLE [db].name DROP PROJECTION name` - Removes projection description from tables metadata and deletes projection files from disk. Implemented as a [mutation](../../../sql-reference/statements/alter/index.md#mutations).
|
||||||
|
|
||||||
|
## MATERIALIZE PROJECTION
|
||||||
|
|
||||||
|
`ALTER TABLE [db.]table MATERIALIZE PROJECTION name IN PARTITION partition_name` - The query rebuilds the projection `name` in the partition `partition_name`. Implemented as a [mutation](../../../sql-reference/statements/alter/index.md#mutations).
|
||||||
|
|
||||||
|
## CLEAR PROJECTION
|
||||||
|
|
||||||
|
`ALTER TABLE [db.]table CLEAR PROJECTION name IN PARTITION partition_name` - Deletes projection files from disk without removing description. Implemented as a [mutation](../../../sql-reference/statements/alter/index.md#mutations).
|
||||||
|
|
||||||
|
|
||||||
The commands `ADD`, `DROP` and `CLEAR` are lightweight in a sense that they only change metadata or remove files.
|
The commands `ADD`, `DROP` and `CLEAR` are lightweight in a sense that they only change metadata or remove files.
|
||||||
|
|
||||||
Also, they are replicated, syncing projections metadata via ZooKeeper.
|
Also, they are replicated, syncing projections metadata via ClickHouse Keeper or ZooKeeper.
|
||||||
|
|
||||||
:::note
|
:::note
|
||||||
Projection manipulation is supported only for tables with [`*MergeTree`](../../../engines/table-engines/mergetree-family/mergetree.md) engine (including [replicated](../../../engines/table-engines/mergetree-family/replication.md) variants).
|
Projection manipulation is supported only for tables with [`*MergeTree`](../../../engines/table-engines/mergetree-family/mergetree.md) engine (including [replicated](../../../engines/table-engines/mergetree-family/replication.md) variants).
|
||||||
|
@ -7,7 +7,7 @@ sidebar_label: INTERSECT
|
|||||||
|
|
||||||
The `INTERSECT` clause returns only those rows that result from both the first and the second queries. The queries must match the number of columns, order, and type. The result of `INTERSECT` can contain duplicate rows.
|
The `INTERSECT` clause returns only those rows that result from both the first and the second queries. The queries must match the number of columns, order, and type. The result of `INTERSECT` can contain duplicate rows.
|
||||||
|
|
||||||
Multiple `INTERSECT` statements are executes left to right if parenthesis are not specified. The `INTERSECT` operator has a higher priority than the `UNION` and `EXCEPT` clause.
|
Multiple `INTERSECT` statements are executed left to right if parentheses are not specified. The `INTERSECT` operator has a higher priority than the `UNION` and `EXCEPT` clauses.
|
||||||
|
|
||||||
|
|
||||||
``` sql
|
``` sql
|
||||||
|
@ -85,8 +85,8 @@ public:
|
|||||||
[[nodiscard]] virtual MutablePtr cloneEmpty() const { return cloneResized(0); }
|
[[nodiscard]] virtual MutablePtr cloneEmpty() const { return cloneResized(0); }
|
||||||
|
|
||||||
/// Creates column with the same type and specified size.
|
/// Creates column with the same type and specified size.
|
||||||
/// If size is less current size, then data is cut.
|
/// If size is less than current size, then data is cut.
|
||||||
/// If size is greater, than default values are appended.
|
/// If size is greater, then default values are appended.
|
||||||
[[nodiscard]] virtual MutablePtr cloneResized(size_t /*size*/) const { throw Exception(ErrorCodes::NOT_IMPLEMENTED, "Cannot cloneResized() column {}", getName()); }
|
[[nodiscard]] virtual MutablePtr cloneResized(size_t /*size*/) const { throw Exception(ErrorCodes::NOT_IMPLEMENTED, "Cannot cloneResized() column {}", getName()); }
|
||||||
|
|
||||||
/// Returns number of values in column.
|
/// Returns number of values in column.
|
||||||
|
50
src/Formats/newLineSegmentationEngine.cpp
Normal file
50
src/Formats/newLineSegmentationEngine.cpp
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
#include <Formats/newLineSegmentationEngine.h>
|
||||||
|
#include <IO/ReadHelpers.h>
|
||||||
|
#include <base/find_symbols.h>
|
||||||
|
|
||||||
|
namespace DB
|
||||||
|
{
|
||||||
|
|
||||||
|
namespace ErrorCodes
|
||||||
|
{
|
||||||
|
extern const int LOGICAL_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::pair<bool, size_t> newLineFileSegmentationEngine(ReadBuffer & in, DB::Memory<> & memory, size_t min_bytes, size_t max_rows)
|
||||||
|
{
|
||||||
|
char * pos = in.position();
|
||||||
|
bool need_more_data = true;
|
||||||
|
size_t number_of_rows = 0;
|
||||||
|
|
||||||
|
while (loadAtPosition(in, memory, pos) && need_more_data)
|
||||||
|
{
|
||||||
|
pos = find_first_symbols<'\r', '\n'>(pos, in.buffer().end());
|
||||||
|
if (pos > in.buffer().end())
|
||||||
|
throw Exception("Position in buffer is out of bounds. There must be a bug.", ErrorCodes::LOGICAL_ERROR);
|
||||||
|
else if (pos == in.buffer().end())
|
||||||
|
continue;
|
||||||
|
|
||||||
|
++number_of_rows;
|
||||||
|
if ((memory.size() + static_cast<size_t>(pos - in.position()) >= min_bytes) || (number_of_rows == max_rows))
|
||||||
|
need_more_data = false;
|
||||||
|
|
||||||
|
if (*pos == '\n')
|
||||||
|
{
|
||||||
|
++pos;
|
||||||
|
if (loadAtPosition(in, memory, pos) && *pos == '\r')
|
||||||
|
++pos;
|
||||||
|
}
|
||||||
|
else if (*pos == '\r')
|
||||||
|
{
|
||||||
|
++pos;
|
||||||
|
if (loadAtPosition(in, memory, pos) && *pos == '\n')
|
||||||
|
++pos;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
saveUpToPosition(in, memory, pos);
|
||||||
|
|
||||||
|
return {loadAtPosition(in, memory, pos), number_of_rows};
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
9
src/Formats/newLineSegmentationEngine.h
Normal file
9
src/Formats/newLineSegmentationEngine.h
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <IO/ReadBuffer.h>
|
||||||
|
#include <IO/BufferWithOwnMemory.h>
|
||||||
|
|
||||||
|
namespace DB
|
||||||
|
{
|
||||||
|
std::pair<bool, size_t> newLineFileSegmentationEngine(ReadBuffer & in, DB::Memory<> & memory, size_t min_bytes, size_t max_rows);
|
||||||
|
}
|
@ -18,6 +18,7 @@ void registerFileSegmentationEngineJSONCompactEachRow(FormatFactory & factory);
|
|||||||
#if USE_HIVE
|
#if USE_HIVE
|
||||||
void registerFileSegmentationEngineHiveText(FormatFactory & factory);
|
void registerFileSegmentationEngineHiveText(FormatFactory & factory);
|
||||||
#endif
|
#endif
|
||||||
|
void registerFileSegmentationEngineLineAsString(FormatFactory & factory);
|
||||||
|
|
||||||
/// Formats for both input/output.
|
/// Formats for both input/output.
|
||||||
|
|
||||||
@ -153,6 +154,7 @@ void registerFormats()
|
|||||||
#if USE_HIVE
|
#if USE_HIVE
|
||||||
registerFileSegmentationEngineHiveText(factory);
|
registerFileSegmentationEngineHiveText(factory);
|
||||||
#endif
|
#endif
|
||||||
|
registerFileSegmentationEngineLineAsString(factory);
|
||||||
|
|
||||||
|
|
||||||
registerInputFormatNative(factory);
|
registerInputFormatNative(factory);
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#include <Processors/Formats/Impl/LineAsStringRowInputFormat.h>
|
#include <Processors/Formats/Impl/LineAsStringRowInputFormat.h>
|
||||||
#include <Formats/JSONUtils.h>
|
#include <Formats/newLineSegmentationEngine.h>
|
||||||
#include <base/find_symbols.h>
|
#include <base/find_symbols.h>
|
||||||
#include <IO/ReadHelpers.h>
|
#include <IO/ReadHelpers.h>
|
||||||
#include <Columns/ColumnString.h>
|
#include <Columns/ColumnString.h>
|
||||||
@ -63,6 +63,12 @@ void registerInputFormatLineAsString(FormatFactory & factory)
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void registerFileSegmentationEngineLineAsString(FormatFactory & factory)
|
||||||
|
{
|
||||||
|
factory.registerFileSegmentationEngine("LineAsString", &newLineFileSegmentationEngine);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void registerLineAsStringSchemaReader(FormatFactory & factory)
|
void registerLineAsStringSchemaReader(FormatFactory & factory)
|
||||||
{
|
{
|
||||||
factory.registerExternalSchemaReader("LineAsString", [](
|
factory.registerExternalSchemaReader("LineAsString", [](
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
#include <Processors/Formats/Impl/RegexpRowInputFormat.h>
|
#include <Processors/Formats/Impl/RegexpRowInputFormat.h>
|
||||||
#include <DataTypes/Serializations/SerializationNullable.h>
|
#include <DataTypes/Serializations/SerializationNullable.h>
|
||||||
#include <Formats/EscapingRuleUtils.h>
|
#include <Formats/EscapingRuleUtils.h>
|
||||||
|
#include <Formats/newLineSegmentationEngine.h>
|
||||||
#include <IO/ReadHelpers.h>
|
#include <IO/ReadHelpers.h>
|
||||||
|
|
||||||
namespace DB
|
namespace DB
|
||||||
@ -178,46 +179,9 @@ void registerInputFormatRegexp(FormatFactory & factory)
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
static std::pair<bool, size_t> fileSegmentationEngineRegexpImpl(ReadBuffer & in, DB::Memory<> & memory, size_t min_bytes, size_t max_rows)
|
|
||||||
{
|
|
||||||
char * pos = in.position();
|
|
||||||
bool need_more_data = true;
|
|
||||||
size_t number_of_rows = 0;
|
|
||||||
|
|
||||||
while (loadAtPosition(in, memory, pos) && need_more_data)
|
|
||||||
{
|
|
||||||
pos = find_first_symbols<'\r', '\n'>(pos, in.buffer().end());
|
|
||||||
if (pos > in.buffer().end())
|
|
||||||
throw Exception("Position in buffer is out of bounds. There must be a bug.", ErrorCodes::LOGICAL_ERROR);
|
|
||||||
else if (pos == in.buffer().end())
|
|
||||||
continue;
|
|
||||||
|
|
||||||
++number_of_rows;
|
|
||||||
if ((memory.size() + static_cast<size_t>(pos - in.position()) >= min_bytes) || (number_of_rows == max_rows))
|
|
||||||
need_more_data = false;
|
|
||||||
|
|
||||||
if (*pos == '\n')
|
|
||||||
{
|
|
||||||
++pos;
|
|
||||||
if (loadAtPosition(in, memory, pos) && *pos == '\r')
|
|
||||||
++pos;
|
|
||||||
}
|
|
||||||
else if (*pos == '\r')
|
|
||||||
{
|
|
||||||
++pos;
|
|
||||||
if (loadAtPosition(in, memory, pos) && *pos == '\n')
|
|
||||||
++pos;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
saveUpToPosition(in, memory, pos);
|
|
||||||
|
|
||||||
return {loadAtPosition(in, memory, pos), number_of_rows};
|
|
||||||
}
|
|
||||||
|
|
||||||
void registerFileSegmentationEngineRegexp(FormatFactory & factory)
|
void registerFileSegmentationEngineRegexp(FormatFactory & factory)
|
||||||
{
|
{
|
||||||
factory.registerFileSegmentationEngine("Regexp", &fileSegmentationEngineRegexpImpl);
|
factory.registerFileSegmentationEngine("Regexp", &newLineFileSegmentationEngine);
|
||||||
}
|
}
|
||||||
|
|
||||||
void registerRegexpSchemaReader(FormatFactory & factory)
|
void registerRegexpSchemaReader(FormatFactory & factory)
|
||||||
|
@ -15,7 +15,7 @@ import boto3 # type: ignore
|
|||||||
NEED_RERUN_OR_CANCELL_WORKFLOWS = {
|
NEED_RERUN_OR_CANCELL_WORKFLOWS = {
|
||||||
"PullRequestCI",
|
"PullRequestCI",
|
||||||
"DocsCheck",
|
"DocsCheck",
|
||||||
"DocsRelease",
|
"DocsReleaseChecks",
|
||||||
"BackportPR",
|
"BackportPR",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -61,11 +61,11 @@ TRUSTED_WORKFLOW_IDS = {
|
|||||||
|
|
||||||
NEED_RERUN_WORKFLOWS = {
|
NEED_RERUN_WORKFLOWS = {
|
||||||
"BackportPR",
|
"BackportPR",
|
||||||
"Docs",
|
"DocsCheck",
|
||||||
"DocsRelease",
|
"DocsReleaseChecks",
|
||||||
"MasterCI",
|
"MasterCI",
|
||||||
"PullRequestCI",
|
"PullRequestCI",
|
||||||
"ReleaseCI",
|
"ReleaseBranchCI",
|
||||||
}
|
}
|
||||||
|
|
||||||
# Individual trusted contirbutors who are not in any trusted organization.
|
# Individual trusted contirbutors who are not in any trusted organization.
|
||||||
|
9
tests/performance/line_as_string_parsing.xml
Normal file
9
tests/performance/line_as_string_parsing.xml
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
<test>
|
||||||
|
|
||||||
|
<fill_query>INSERT INTO FUNCTION file(test_line_as_string.tsv) SELECT randomString(1000) FROM numbers(1000000) SETTINGS engine_file_truncate_on_insert=1</fill_query>
|
||||||
|
|
||||||
|
<query>SELECT * FROM file(test_line_as_string.tsv, LineAsString) FORMAT Null</query>
|
||||||
|
|
||||||
|
<drop_query>INSERT INTO FUNCTION file(test_line_as_string.tsv) SELECT * FROM numbers(0) SETTINGS engine_file_truncate_on_insert=1</drop_query>
|
||||||
|
|
||||||
|
</test>
|
@ -1,169 +1,169 @@
|
|||||||
-- { echo }
|
-- { echo }
|
||||||
|
|
||||||
-- Date32 vs Date32
|
-- Date32 vs Date32
|
||||||
SELECT dateDiff('second', toDate32('1927-01-01'), toDate32('1927-01-02'));
|
SELECT dateDiff('second', toDate32('1927-01-01', 'UTC'), toDate32('1927-01-02', 'UTC'), 'UTC');
|
||||||
86400
|
86400
|
||||||
SELECT dateDiff('minute', toDate32('1927-01-01'), toDate32('1927-01-02'));
|
SELECT dateDiff('minute', toDate32('1927-01-01', 'UTC'), toDate32('1927-01-02', 'UTC'), 'UTC');
|
||||||
1440
|
1440
|
||||||
SELECT dateDiff('hour', toDate32('1927-01-01'), toDate32('1927-01-02'));
|
SELECT dateDiff('hour', toDate32('1927-01-01', 'UTC'), toDate32('1927-01-02', 'UTC'), 'UTC');
|
||||||
24
|
24
|
||||||
SELECT dateDiff('day', toDate32('1927-01-01'), toDate32('1927-01-02'));
|
SELECT dateDiff('day', toDate32('1927-01-01', 'UTC'), toDate32('1927-01-02', 'UTC'), 'UTC');
|
||||||
1
|
1
|
||||||
SELECT dateDiff('week', toDate32('1927-01-01'), toDate32('1927-01-08'));
|
SELECT dateDiff('week', toDate32('1927-01-01', 'UTC'), toDate32('1927-01-08', 'UTC'), 'UTC');
|
||||||
1
|
1
|
||||||
SELECT dateDiff('month', toDate32('1927-01-01'), toDate32('1927-02-01'));
|
SELECT dateDiff('month', toDate32('1927-01-01', 'UTC'), toDate32('1927-02-01', 'UTC'), 'UTC');
|
||||||
1
|
1
|
||||||
SELECT dateDiff('quarter', toDate32('1927-01-01'), toDate32('1927-04-01'));
|
SELECT dateDiff('quarter', toDate32('1927-01-01', 'UTC'), toDate32('1927-04-01', 'UTC'), 'UTC');
|
||||||
1
|
1
|
||||||
SELECT dateDiff('year', toDate32('1927-01-01'), toDate32('1928-01-01'));
|
SELECT dateDiff('year', toDate32('1927-01-01', 'UTC'), toDate32('1928-01-01', 'UTC'), 'UTC');
|
||||||
1
|
1
|
||||||
-- With DateTime64
|
-- With DateTime64
|
||||||
-- Date32 vs DateTime64
|
-- Date32 vs DateTime64
|
||||||
SELECT dateDiff('second', toDate32('1927-01-01'), toDateTime64('1927-01-02 00:00:00', 3));
|
SELECT dateDiff('second', toDate32('1927-01-01', 'UTC'), toDateTime64('1927-01-02 00:00:00', 3, 'UTC'), 'UTC');
|
||||||
86400
|
86400
|
||||||
SELECT dateDiff('minute', toDate32('1927-01-01'), toDateTime64('1927-01-02 00:00:00', 3));
|
SELECT dateDiff('minute', toDate32('1927-01-01', 'UTC'), toDateTime64('1927-01-02 00:00:00', 3, 'UTC'), 'UTC');
|
||||||
1440
|
1440
|
||||||
SELECT dateDiff('hour', toDate32('1927-01-01'), toDateTime64('1927-01-02 00:00:00', 3));
|
SELECT dateDiff('hour', toDate32('1927-01-01', 'UTC'), toDateTime64('1927-01-02 00:00:00', 3, 'UTC'), 'UTC');
|
||||||
24
|
24
|
||||||
SELECT dateDiff('day', toDate32('1927-01-01'), toDateTime64('1927-01-02 00:00:00', 3));
|
SELECT dateDiff('day', toDate32('1927-01-01', 'UTC'), toDateTime64('1927-01-02 00:00:00', 3, 'UTC'), 'UTC');
|
||||||
1
|
1
|
||||||
SELECT dateDiff('week', toDate32('1927-01-01'), toDateTime64('1927-01-08 00:00:00', 3));
|
SELECT dateDiff('week', toDate32('1927-01-01', 'UTC'), toDateTime64('1927-01-08 00:00:00', 3, 'UTC'), 'UTC');
|
||||||
1
|
1
|
||||||
SELECT dateDiff('month', toDate32('1927-01-01'), toDateTime64('1927-02-01 00:00:00', 3));
|
SELECT dateDiff('month', toDate32('1927-01-01', 'UTC'), toDateTime64('1927-02-01 00:00:00', 3, 'UTC'), 'UTC');
|
||||||
1
|
1
|
||||||
SELECT dateDiff('quarter', toDate32('1927-01-01'), toDateTime64('1927-04-01 00:00:00', 3));
|
SELECT dateDiff('quarter', toDate32('1927-01-01', 'UTC'), toDateTime64('1927-04-01 00:00:00', 3, 'UTC'), 'UTC');
|
||||||
1
|
1
|
||||||
SELECT dateDiff('year', toDate32('1927-01-01'), toDateTime64('1928-01-01 00:00:00', 3));
|
SELECT dateDiff('year', toDate32('1927-01-01', 'UTC'), toDateTime64('1928-01-01 00:00:00', 3, 'UTC'), 'UTC');
|
||||||
1
|
1
|
||||||
-- DateTime64 vs Date32
|
-- DateTime64 vs Date32
|
||||||
SELECT dateDiff('second', toDateTime64('1927-01-01 00:00:00', 3), toDate32('1927-01-02'));
|
SELECT dateDiff('second', toDateTime64('1927-01-01 00:00:00', 3, 'UTC'), toDate32('1927-01-02', 'UTC'), 'UTC');
|
||||||
86400
|
86400
|
||||||
SELECT dateDiff('minute', toDateTime64('1927-01-01 00:00:00', 3), toDate32('1927-01-02'));
|
SELECT dateDiff('minute', toDateTime64('1927-01-01 00:00:00', 3, 'UTC'), toDate32('1927-01-02', 'UTC'), 'UTC');
|
||||||
1440
|
1440
|
||||||
SELECT dateDiff('hour', toDateTime64('1927-01-01 00:00:00', 3), toDate32('1927-01-02'));
|
SELECT dateDiff('hour', toDateTime64('1927-01-01 00:00:00', 3, 'UTC'), toDate32('1927-01-02', 'UTC'), 'UTC');
|
||||||
24
|
24
|
||||||
SELECT dateDiff('day', toDateTime64('1927-01-01 00:00:00', 3), toDate32('1927-01-02'));
|
SELECT dateDiff('day', toDateTime64('1927-01-01 00:00:00', 3, 'UTC'), toDate32('1927-01-02', 'UTC'), 'UTC');
|
||||||
1
|
1
|
||||||
SELECT dateDiff('week', toDateTime64('1927-01-01 00:00:00', 3), toDate32('1927-01-08'));
|
SELECT dateDiff('week', toDateTime64('1927-01-01 00:00:00', 3, 'UTC'), toDate32('1927-01-08', 'UTC'), 'UTC');
|
||||||
1
|
1
|
||||||
SELECT dateDiff('month', toDateTime64('1927-01-01 00:00:00', 3), toDate32('1927-02-01'));
|
SELECT dateDiff('month', toDateTime64('1927-01-01 00:00:00', 3, 'UTC'), toDate32('1927-02-01', 'UTC'), 'UTC');
|
||||||
1
|
1
|
||||||
SELECT dateDiff('quarter', toDateTime64('1927-01-01 00:00:00', 3), toDate32('1927-04-01'));
|
SELECT dateDiff('quarter', toDateTime64('1927-01-01 00:00:00', 3, 'UTC'), toDate32('1927-04-01', 'UTC'), 'UTC');
|
||||||
1
|
1
|
||||||
SELECT dateDiff('year', toDateTime64('1927-01-01 00:00:00', 3), toDate32('1928-01-01'));
|
SELECT dateDiff('year', toDateTime64('1927-01-01 00:00:00', 3, 'UTC'), toDate32('1928-01-01', 'UTC'), 'UTC');
|
||||||
1
|
1
|
||||||
-- With DateTime
|
-- With DateTime
|
||||||
-- Date32 vs DateTime
|
-- Date32 vs DateTime
|
||||||
SELECT dateDiff('second', toDate32('2015-08-18'), toDateTime('2015-08-19 00:00:00'));
|
SELECT dateDiff('second', toDate32('2015-08-18', 'UTC'), toDateTime('2015-08-19 00:00:00', 'UTC'), 'UTC');
|
||||||
86400
|
86400
|
||||||
SELECT dateDiff('minute', toDate32('2015-08-18'), toDateTime('2015-08-19 00:00:00'));
|
SELECT dateDiff('minute', toDate32('2015-08-18', 'UTC'), toDateTime('2015-08-19 00:00:00', 'UTC'), 'UTC');
|
||||||
1440
|
1440
|
||||||
SELECT dateDiff('hour', toDate32('2015-08-18'), toDateTime('2015-08-19 00:00:00'));
|
SELECT dateDiff('hour', toDate32('2015-08-18', 'UTC'), toDateTime('2015-08-19 00:00:00', 'UTC'), 'UTC');
|
||||||
24
|
24
|
||||||
SELECT dateDiff('day', toDate32('2015-08-18'), toDateTime('2015-08-19 00:00:00'));
|
SELECT dateDiff('day', toDate32('2015-08-18', 'UTC'), toDateTime('2015-08-19 00:00:00', 'UTC'), 'UTC');
|
||||||
1
|
1
|
||||||
SELECT dateDiff('week', toDate32('2015-08-18'), toDateTime('2015-08-25 00:00:00'));
|
SELECT dateDiff('week', toDate32('2015-08-18', 'UTC'), toDateTime('2015-08-25 00:00:00', 'UTC'), 'UTC');
|
||||||
1
|
1
|
||||||
SELECT dateDiff('month', toDate32('2015-08-18'), toDateTime('2015-09-18 00:00:00'));
|
SELECT dateDiff('month', toDate32('2015-08-18', 'UTC'), toDateTime('2015-09-18 00:00:00', 'UTC'), 'UTC');
|
||||||
1
|
1
|
||||||
SELECT dateDiff('quarter', toDate32('2015-08-18'), toDateTime('2015-11-18 00:00:00'));
|
SELECT dateDiff('quarter', toDate32('2015-08-18', 'UTC'), toDateTime('2015-11-18 00:00:00', 'UTC'), 'UTC');
|
||||||
1
|
1
|
||||||
SELECT dateDiff('year', toDate32('2015-08-18'), toDateTime('2016-08-18 00:00:00'));
|
SELECT dateDiff('year', toDate32('2015-08-18', 'UTC'), toDateTime('2016-08-18 00:00:00', 'UTC'), 'UTC');
|
||||||
1
|
1
|
||||||
-- DateTime vs Date32
|
-- DateTime vs Date32
|
||||||
SELECT dateDiff('second', toDateTime('2015-08-18 00:00:00'), toDate32('2015-08-19'));
|
SELECT dateDiff('second', toDateTime('2015-08-18 00:00:00', 'UTC'), toDate32('2015-08-19', 'UTC'), 'UTC');
|
||||||
86400
|
86400
|
||||||
SELECT dateDiff('minute', toDateTime('2015-08-18 00:00:00'), toDate32('2015-08-19'));
|
SELECT dateDiff('minute', toDateTime('2015-08-18 00:00:00', 'UTC'), toDate32('2015-08-19', 'UTC'), 'UTC');
|
||||||
1440
|
1440
|
||||||
SELECT dateDiff('hour', toDateTime('2015-08-18 00:00:00'), toDate32('2015-08-19'));
|
SELECT dateDiff('hour', toDateTime('2015-08-18 00:00:00', 'UTC'), toDate32('2015-08-19', 'UTC'), 'UTC');
|
||||||
24
|
24
|
||||||
SELECT dateDiff('day', toDateTime('2015-08-18 00:00:00'), toDate32('2015-08-19'));
|
SELECT dateDiff('day', toDateTime('2015-08-18 00:00:00', 'UTC'), toDate32('2015-08-19', 'UTC'), 'UTC');
|
||||||
1
|
1
|
||||||
SELECT dateDiff('week', toDateTime('2015-08-18 00:00:00'), toDate32('2015-08-25'));
|
SELECT dateDiff('week', toDateTime('2015-08-18 00:00:00', 'UTC'), toDate32('2015-08-25', 'UTC'), 'UTC');
|
||||||
1
|
1
|
||||||
SELECT dateDiff('month', toDateTime('2015-08-18 00:00:00'), toDate32('2015-09-18'));
|
SELECT dateDiff('month', toDateTime('2015-08-18 00:00:00', 'UTC'), toDate32('2015-09-18', 'UTC'), 'UTC');
|
||||||
1
|
1
|
||||||
SELECT dateDiff('quarter', toDateTime('2015-08-18 00:00:00'), toDate32('2015-11-18'));
|
SELECT dateDiff('quarter', toDateTime('2015-08-18 00:00:00', 'UTC'), toDate32('2015-11-18', 'UTC'), 'UTC');
|
||||||
1
|
1
|
||||||
SELECT dateDiff('year', toDateTime('2015-08-18 00:00:00'), toDate32('2016-08-18'));
|
SELECT dateDiff('year', toDateTime('2015-08-18 00:00:00', 'UTC'), toDate32('2016-08-18', 'UTC'), 'UTC');
|
||||||
1
|
1
|
||||||
-- With Date
|
-- With Date
|
||||||
-- Date32 vs Date
|
-- Date32 vs Date
|
||||||
SELECT dateDiff('second', toDate32('2015-08-18'), toDate('2015-08-19'));
|
SELECT dateDiff('second', toDate32('2015-08-18', 'UTC'), toDate('2015-08-19', 'UTC'), 'UTC');
|
||||||
86400
|
86400
|
||||||
SELECT dateDiff('minute', toDate32('2015-08-18'), toDate('2015-08-19'));
|
SELECT dateDiff('minute', toDate32('2015-08-18', 'UTC'), toDate('2015-08-19', 'UTC'), 'UTC');
|
||||||
1440
|
1440
|
||||||
SELECT dateDiff('hour', toDate32('2015-08-18'), toDate('2015-08-19'));
|
SELECT dateDiff('hour', toDate32('2015-08-18', 'UTC'), toDate('2015-08-19', 'UTC'), 'UTC');
|
||||||
24
|
24
|
||||||
SELECT dateDiff('day', toDate32('2015-08-18'), toDate('2015-08-19'));
|
SELECT dateDiff('day', toDate32('2015-08-18', 'UTC'), toDate('2015-08-19', 'UTC'), 'UTC');
|
||||||
1
|
1
|
||||||
SELECT dateDiff('week', toDate32('2015-08-18'), toDate('2015-08-25'));
|
SELECT dateDiff('week', toDate32('2015-08-18', 'UTC'), toDate('2015-08-25', 'UTC'), 'UTC');
|
||||||
1
|
1
|
||||||
SELECT dateDiff('month', toDate32('2015-08-18'), toDate('2015-09-18'));
|
SELECT dateDiff('month', toDate32('2015-08-18', 'UTC'), toDate('2015-09-18', 'UTC'), 'UTC');
|
||||||
1
|
1
|
||||||
SELECT dateDiff('quarter', toDate32('2015-08-18'), toDate('2015-11-18'));
|
SELECT dateDiff('quarter', toDate32('2015-08-18', 'UTC'), toDate('2015-11-18', 'UTC'), 'UTC');
|
||||||
1
|
1
|
||||||
SELECT dateDiff('year', toDate32('2015-08-18'), toDate('2016-08-18'));
|
SELECT dateDiff('year', toDate32('2015-08-18', 'UTC'), toDate('2016-08-18', 'UTC'), 'UTC');
|
||||||
1
|
1
|
||||||
-- Date vs Date32
|
-- Date vs Date32
|
||||||
SELECT dateDiff('second', toDate('2015-08-18'), toDate32('2015-08-19'));
|
SELECT dateDiff('second', toDate('2015-08-18', 'UTC'), toDate32('2015-08-19', 'UTC'), 'UTC');
|
||||||
86400
|
86400
|
||||||
SELECT dateDiff('minute', toDate('2015-08-18'), toDate32('2015-08-19'));
|
SELECT dateDiff('minute', toDate('2015-08-18', 'UTC'), toDate32('2015-08-19', 'UTC'), 'UTC');
|
||||||
1440
|
1440
|
||||||
SELECT dateDiff('hour', toDate('2015-08-18'), toDate32('2015-08-19'));
|
SELECT dateDiff('hour', toDate('2015-08-18', 'UTC'), toDate32('2015-08-19', 'UTC'), 'UTC');
|
||||||
24
|
24
|
||||||
SELECT dateDiff('day', toDate('2015-08-18'), toDate32('2015-08-19'));
|
SELECT dateDiff('day', toDate('2015-08-18', 'UTC'), toDate32('2015-08-19', 'UTC'), 'UTC');
|
||||||
1
|
1
|
||||||
SELECT dateDiff('week', toDate('2015-08-18'), toDate32('2015-08-25'));
|
SELECT dateDiff('week', toDate('2015-08-18', 'UTC'), toDate32('2015-08-25', 'UTC'), 'UTC');
|
||||||
1
|
1
|
||||||
SELECT dateDiff('month', toDate('2015-08-18'), toDate32('2015-09-18'));
|
SELECT dateDiff('month', toDate('2015-08-18', 'UTC'), toDate32('2015-09-18', 'UTC'), 'UTC');
|
||||||
1
|
1
|
||||||
SELECT dateDiff('quarter', toDate('2015-08-18'), toDate32('2015-11-18'));
|
SELECT dateDiff('quarter', toDate('2015-08-18', 'UTC'), toDate32('2015-11-18', 'UTC'), 'UTC');
|
||||||
1
|
1
|
||||||
SELECT dateDiff('year', toDate('2015-08-18'), toDate32('2016-08-18'));
|
SELECT dateDiff('year', toDate('2015-08-18', 'UTC'), toDate32('2016-08-18', 'UTC'), 'UTC');
|
||||||
1
|
1
|
||||||
-- Const vs non-const columns
|
-- Const vs non-const columns
|
||||||
SELECT dateDiff('day', toDate32('1927-01-01'), materialize(toDate32('1927-01-02')));
|
SELECT dateDiff('day', toDate32('1927-01-01', 'UTC'), materialize(toDate32('1927-01-02', 'UTC')), 'UTC');
|
||||||
1
|
1
|
||||||
SELECT dateDiff('day', toDate32('1927-01-01'), materialize(toDateTime64('1927-01-02 00:00:00', 3)));
|
SELECT dateDiff('day', toDate32('1927-01-01', 'UTC'), materialize(toDateTime64('1927-01-02 00:00:00', 3, 'UTC')), 'UTC');
|
||||||
1
|
1
|
||||||
SELECT dateDiff('day', toDateTime64('1927-01-01 00:00:00', 3), materialize(toDate32('1927-01-02')));
|
SELECT dateDiff('day', toDateTime64('1927-01-01 00:00:00', 3, 'UTC'), materialize(toDate32('1927-01-02', 'UTC')), 'UTC');
|
||||||
1
|
1
|
||||||
SELECT dateDiff('day', toDate32('2015-08-18'), materialize(toDateTime('2015-08-19 00:00:00')));
|
SELECT dateDiff('day', toDate32('2015-08-18', 'UTC'), materialize(toDateTime('2015-08-19 00:00:00', 'UTC')), 'UTC');
|
||||||
1
|
1
|
||||||
SELECT dateDiff('day', toDateTime('2015-08-18 00:00:00'), materialize(toDate32('2015-08-19')));
|
SELECT dateDiff('day', toDateTime('2015-08-18 00:00:00', 'UTC'), materialize(toDate32('2015-08-19', 'UTC')), 'UTC');
|
||||||
1
|
1
|
||||||
SELECT dateDiff('day', toDate32('2015-08-18'), materialize(toDate('2015-08-19')));
|
SELECT dateDiff('day', toDate32('2015-08-18', 'UTC'), materialize(toDate('2015-08-19', 'UTC')), 'UTC');
|
||||||
1
|
1
|
||||||
SELECT dateDiff('day', toDate('2015-08-18'), materialize(toDate32('2015-08-19')));
|
SELECT dateDiff('day', toDate('2015-08-18', 'UTC'), materialize(toDate32('2015-08-19', 'UTC')), 'UTC');
|
||||||
1
|
1
|
||||||
-- Non-const vs const columns
|
-- Non-const vs const columns
|
||||||
SELECT dateDiff('day', materialize(toDate32('1927-01-01')), toDate32('1927-01-02'));
|
SELECT dateDiff('day', materialize(toDate32('1927-01-01', 'UTC')), toDate32('1927-01-02', 'UTC'), 'UTC');
|
||||||
1
|
1
|
||||||
SELECT dateDiff('day', materialize(toDate32('1927-01-01')), toDateTime64('1927-01-02 00:00:00', 3));
|
SELECT dateDiff('day', materialize(toDate32('1927-01-01', 'UTC')), toDateTime64('1927-01-02 00:00:00', 3, 'UTC'), 'UTC');
|
||||||
1
|
1
|
||||||
SELECT dateDiff('day', materialize(toDateTime64('1927-01-01 00:00:00', 3)), toDate32('1927-01-02'));
|
SELECT dateDiff('day', materialize(toDateTime64('1927-01-01 00:00:00', 3, 'UTC')), toDate32('1927-01-02', 'UTC'), 'UTC');
|
||||||
1
|
1
|
||||||
SELECT dateDiff('day', materialize(toDate32('2015-08-18')), toDateTime('2015-08-19 00:00:00'));
|
SELECT dateDiff('day', materialize(toDate32('2015-08-18', 'UTC')), toDateTime('2015-08-19 00:00:00', 'UTC'), 'UTC');
|
||||||
1
|
1
|
||||||
SELECT dateDiff('day', materialize(toDateTime('2015-08-18 00:00:00')), toDate32('2015-08-19'));
|
SELECT dateDiff('day', materialize(toDateTime('2015-08-18 00:00:00', 'UTC')), toDate32('2015-08-19', 'UTC'), 'UTC');
|
||||||
1
|
1
|
||||||
SELECT dateDiff('day', materialize(toDate32('2015-08-18')), toDate('2015-08-19'));
|
SELECT dateDiff('day', materialize(toDate32('2015-08-18', 'UTC')), toDate('2015-08-19', 'UTC'), 'UTC');
|
||||||
1
|
1
|
||||||
SELECT dateDiff('day', materialize(toDate('2015-08-18')), toDate32('2015-08-19'));
|
SELECT dateDiff('day', materialize(toDate('2015-08-18', 'UTC')), toDate32('2015-08-19', 'UTC'), 'UTC');
|
||||||
1
|
1
|
||||||
-- Non-const vs non-const columns
|
-- Non-const vs non-const columns
|
||||||
SELECT dateDiff('day', materialize(toDate32('1927-01-01')), materialize(toDate32('1927-01-02')));
|
SELECT dateDiff('day', materialize(toDate32('1927-01-01', 'UTC')), materialize(toDate32('1927-01-02', 'UTC')), 'UTC');
|
||||||
1
|
1
|
||||||
SELECT dateDiff('day', materialize(toDate32('1927-01-01')), materialize(toDateTime64('1927-01-02 00:00:00', 3)));
|
SELECT dateDiff('day', materialize(toDate32('1927-01-01', 'UTC')), materialize(toDateTime64('1927-01-02 00:00:00', 3, 'UTC')), 'UTC');
|
||||||
1
|
1
|
||||||
SELECT dateDiff('day', materialize(toDateTime64('1927-01-01 00:00:00', 3)), materialize(toDate32('1927-01-02')));
|
SELECT dateDiff('day', materialize(toDateTime64('1927-01-01 00:00:00', 3, 'UTC')), materialize(toDate32('1927-01-02', 'UTC')), 'UTC');
|
||||||
1
|
1
|
||||||
SELECT dateDiff('day', materialize(toDate32('2015-08-18')), materialize(toDateTime('2015-08-19 00:00:00')));
|
SELECT dateDiff('day', materialize(toDate32('2015-08-18', 'UTC')), materialize(toDateTime('2015-08-19 00:00:00', 'UTC')), 'UTC');
|
||||||
1
|
1
|
||||||
SELECT dateDiff('day', materialize(toDateTime('2015-08-18 00:00:00')), materialize(toDate32('2015-08-19')));
|
SELECT dateDiff('day', materialize(toDateTime('2015-08-18 00:00:00', 'UTC')), materialize(toDate32('2015-08-19', 'UTC')), 'UTC');
|
||||||
1
|
1
|
||||||
SELECT dateDiff('day', materialize(toDate32('2015-08-18')), materialize(toDate('2015-08-19')));
|
SELECT dateDiff('day', materialize(toDate32('2015-08-18', 'UTC')), materialize(toDate('2015-08-19', 'UTC')), 'UTC');
|
||||||
1
|
1
|
||||||
SELECT dateDiff('day', materialize(toDate('2015-08-18')), materialize(toDate32('2015-08-19')));
|
SELECT dateDiff('day', materialize(toDate('2015-08-18', 'UTC')), materialize(toDate32('2015-08-19', 'UTC')), 'UTC');
|
||||||
1
|
1
|
||||||
|
@ -1,101 +1,101 @@
|
|||||||
-- { echo }
|
-- { echo }
|
||||||
|
|
||||||
-- Date32 vs Date32
|
-- Date32 vs Date32
|
||||||
SELECT dateDiff('second', toDate32('1927-01-01'), toDate32('1927-01-02'));
|
SELECT dateDiff('second', toDate32('1927-01-01', 'UTC'), toDate32('1927-01-02', 'UTC'), 'UTC');
|
||||||
SELECT dateDiff('minute', toDate32('1927-01-01'), toDate32('1927-01-02'));
|
SELECT dateDiff('minute', toDate32('1927-01-01', 'UTC'), toDate32('1927-01-02', 'UTC'), 'UTC');
|
||||||
SELECT dateDiff('hour', toDate32('1927-01-01'), toDate32('1927-01-02'));
|
SELECT dateDiff('hour', toDate32('1927-01-01', 'UTC'), toDate32('1927-01-02', 'UTC'), 'UTC');
|
||||||
SELECT dateDiff('day', toDate32('1927-01-01'), toDate32('1927-01-02'));
|
SELECT dateDiff('day', toDate32('1927-01-01', 'UTC'), toDate32('1927-01-02', 'UTC'), 'UTC');
|
||||||
SELECT dateDiff('week', toDate32('1927-01-01'), toDate32('1927-01-08'));
|
SELECT dateDiff('week', toDate32('1927-01-01', 'UTC'), toDate32('1927-01-08', 'UTC'), 'UTC');
|
||||||
SELECT dateDiff('month', toDate32('1927-01-01'), toDate32('1927-02-01'));
|
SELECT dateDiff('month', toDate32('1927-01-01', 'UTC'), toDate32('1927-02-01', 'UTC'), 'UTC');
|
||||||
SELECT dateDiff('quarter', toDate32('1927-01-01'), toDate32('1927-04-01'));
|
SELECT dateDiff('quarter', toDate32('1927-01-01', 'UTC'), toDate32('1927-04-01', 'UTC'), 'UTC');
|
||||||
SELECT dateDiff('year', toDate32('1927-01-01'), toDate32('1928-01-01'));
|
SELECT dateDiff('year', toDate32('1927-01-01', 'UTC'), toDate32('1928-01-01', 'UTC'), 'UTC');
|
||||||
|
|
||||||
-- With DateTime64
|
-- With DateTime64
|
||||||
-- Date32 vs DateTime64
|
-- Date32 vs DateTime64
|
||||||
SELECT dateDiff('second', toDate32('1927-01-01'), toDateTime64('1927-01-02 00:00:00', 3));
|
SELECT dateDiff('second', toDate32('1927-01-01', 'UTC'), toDateTime64('1927-01-02 00:00:00', 3, 'UTC'), 'UTC');
|
||||||
SELECT dateDiff('minute', toDate32('1927-01-01'), toDateTime64('1927-01-02 00:00:00', 3));
|
SELECT dateDiff('minute', toDate32('1927-01-01', 'UTC'), toDateTime64('1927-01-02 00:00:00', 3, 'UTC'), 'UTC');
|
||||||
SELECT dateDiff('hour', toDate32('1927-01-01'), toDateTime64('1927-01-02 00:00:00', 3));
|
SELECT dateDiff('hour', toDate32('1927-01-01', 'UTC'), toDateTime64('1927-01-02 00:00:00', 3, 'UTC'), 'UTC');
|
||||||
SELECT dateDiff('day', toDate32('1927-01-01'), toDateTime64('1927-01-02 00:00:00', 3));
|
SELECT dateDiff('day', toDate32('1927-01-01', 'UTC'), toDateTime64('1927-01-02 00:00:00', 3, 'UTC'), 'UTC');
|
||||||
SELECT dateDiff('week', toDate32('1927-01-01'), toDateTime64('1927-01-08 00:00:00', 3));
|
SELECT dateDiff('week', toDate32('1927-01-01', 'UTC'), toDateTime64('1927-01-08 00:00:00', 3, 'UTC'), 'UTC');
|
||||||
SELECT dateDiff('month', toDate32('1927-01-01'), toDateTime64('1927-02-01 00:00:00', 3));
|
SELECT dateDiff('month', toDate32('1927-01-01', 'UTC'), toDateTime64('1927-02-01 00:00:00', 3, 'UTC'), 'UTC');
|
||||||
SELECT dateDiff('quarter', toDate32('1927-01-01'), toDateTime64('1927-04-01 00:00:00', 3));
|
SELECT dateDiff('quarter', toDate32('1927-01-01', 'UTC'), toDateTime64('1927-04-01 00:00:00', 3, 'UTC'), 'UTC');
|
||||||
SELECT dateDiff('year', toDate32('1927-01-01'), toDateTime64('1928-01-01 00:00:00', 3));
|
SELECT dateDiff('year', toDate32('1927-01-01', 'UTC'), toDateTime64('1928-01-01 00:00:00', 3, 'UTC'), 'UTC');
|
||||||
|
|
||||||
-- DateTime64 vs Date32
|
-- DateTime64 vs Date32
|
||||||
SELECT dateDiff('second', toDateTime64('1927-01-01 00:00:00', 3), toDate32('1927-01-02'));
|
SELECT dateDiff('second', toDateTime64('1927-01-01 00:00:00', 3, 'UTC'), toDate32('1927-01-02', 'UTC'), 'UTC');
|
||||||
SELECT dateDiff('minute', toDateTime64('1927-01-01 00:00:00', 3), toDate32('1927-01-02'));
|
SELECT dateDiff('minute', toDateTime64('1927-01-01 00:00:00', 3, 'UTC'), toDate32('1927-01-02', 'UTC'), 'UTC');
|
||||||
SELECT dateDiff('hour', toDateTime64('1927-01-01 00:00:00', 3), toDate32('1927-01-02'));
|
SELECT dateDiff('hour', toDateTime64('1927-01-01 00:00:00', 3, 'UTC'), toDate32('1927-01-02', 'UTC'), 'UTC');
|
||||||
SELECT dateDiff('day', toDateTime64('1927-01-01 00:00:00', 3), toDate32('1927-01-02'));
|
SELECT dateDiff('day', toDateTime64('1927-01-01 00:00:00', 3, 'UTC'), toDate32('1927-01-02', 'UTC'), 'UTC');
|
||||||
SELECT dateDiff('week', toDateTime64('1927-01-01 00:00:00', 3), toDate32('1927-01-08'));
|
SELECT dateDiff('week', toDateTime64('1927-01-01 00:00:00', 3, 'UTC'), toDate32('1927-01-08', 'UTC'), 'UTC');
|
||||||
SELECT dateDiff('month', toDateTime64('1927-01-01 00:00:00', 3), toDate32('1927-02-01'));
|
SELECT dateDiff('month', toDateTime64('1927-01-01 00:00:00', 3, 'UTC'), toDate32('1927-02-01', 'UTC'), 'UTC');
|
||||||
SELECT dateDiff('quarter', toDateTime64('1927-01-01 00:00:00', 3), toDate32('1927-04-01'));
|
SELECT dateDiff('quarter', toDateTime64('1927-01-01 00:00:00', 3, 'UTC'), toDate32('1927-04-01', 'UTC'), 'UTC');
|
||||||
SELECT dateDiff('year', toDateTime64('1927-01-01 00:00:00', 3), toDate32('1928-01-01'));
|
SELECT dateDiff('year', toDateTime64('1927-01-01 00:00:00', 3, 'UTC'), toDate32('1928-01-01', 'UTC'), 'UTC');
|
||||||
|
|
||||||
-- With DateTime
|
-- With DateTime
|
||||||
-- Date32 vs DateTime
|
-- Date32 vs DateTime
|
||||||
SELECT dateDiff('second', toDate32('2015-08-18'), toDateTime('2015-08-19 00:00:00'));
|
SELECT dateDiff('second', toDate32('2015-08-18', 'UTC'), toDateTime('2015-08-19 00:00:00', 'UTC'), 'UTC');
|
||||||
SELECT dateDiff('minute', toDate32('2015-08-18'), toDateTime('2015-08-19 00:00:00'));
|
SELECT dateDiff('minute', toDate32('2015-08-18', 'UTC'), toDateTime('2015-08-19 00:00:00', 'UTC'), 'UTC');
|
||||||
SELECT dateDiff('hour', toDate32('2015-08-18'), toDateTime('2015-08-19 00:00:00'));
|
SELECT dateDiff('hour', toDate32('2015-08-18', 'UTC'), toDateTime('2015-08-19 00:00:00', 'UTC'), 'UTC');
|
||||||
SELECT dateDiff('day', toDate32('2015-08-18'), toDateTime('2015-08-19 00:00:00'));
|
SELECT dateDiff('day', toDate32('2015-08-18', 'UTC'), toDateTime('2015-08-19 00:00:00', 'UTC'), 'UTC');
|
||||||
SELECT dateDiff('week', toDate32('2015-08-18'), toDateTime('2015-08-25 00:00:00'));
|
SELECT dateDiff('week', toDate32('2015-08-18', 'UTC'), toDateTime('2015-08-25 00:00:00', 'UTC'), 'UTC');
|
||||||
SELECT dateDiff('month', toDate32('2015-08-18'), toDateTime('2015-09-18 00:00:00'));
|
SELECT dateDiff('month', toDate32('2015-08-18', 'UTC'), toDateTime('2015-09-18 00:00:00', 'UTC'), 'UTC');
|
||||||
SELECT dateDiff('quarter', toDate32('2015-08-18'), toDateTime('2015-11-18 00:00:00'));
|
SELECT dateDiff('quarter', toDate32('2015-08-18', 'UTC'), toDateTime('2015-11-18 00:00:00', 'UTC'), 'UTC');
|
||||||
SELECT dateDiff('year', toDate32('2015-08-18'), toDateTime('2016-08-18 00:00:00'));
|
SELECT dateDiff('year', toDate32('2015-08-18', 'UTC'), toDateTime('2016-08-18 00:00:00', 'UTC'), 'UTC');
|
||||||
|
|
||||||
-- DateTime vs Date32
|
-- DateTime vs Date32
|
||||||
SELECT dateDiff('second', toDateTime('2015-08-18 00:00:00'), toDate32('2015-08-19'));
|
SELECT dateDiff('second', toDateTime('2015-08-18 00:00:00', 'UTC'), toDate32('2015-08-19', 'UTC'), 'UTC');
|
||||||
SELECT dateDiff('minute', toDateTime('2015-08-18 00:00:00'), toDate32('2015-08-19'));
|
SELECT dateDiff('minute', toDateTime('2015-08-18 00:00:00', 'UTC'), toDate32('2015-08-19', 'UTC'), 'UTC');
|
||||||
SELECT dateDiff('hour', toDateTime('2015-08-18 00:00:00'), toDate32('2015-08-19'));
|
SELECT dateDiff('hour', toDateTime('2015-08-18 00:00:00', 'UTC'), toDate32('2015-08-19', 'UTC'), 'UTC');
|
||||||
SELECT dateDiff('day', toDateTime('2015-08-18 00:00:00'), toDate32('2015-08-19'));
|
SELECT dateDiff('day', toDateTime('2015-08-18 00:00:00', 'UTC'), toDate32('2015-08-19', 'UTC'), 'UTC');
|
||||||
SELECT dateDiff('week', toDateTime('2015-08-18 00:00:00'), toDate32('2015-08-25'));
|
SELECT dateDiff('week', toDateTime('2015-08-18 00:00:00', 'UTC'), toDate32('2015-08-25', 'UTC'), 'UTC');
|
||||||
SELECT dateDiff('month', toDateTime('2015-08-18 00:00:00'), toDate32('2015-09-18'));
|
SELECT dateDiff('month', toDateTime('2015-08-18 00:00:00', 'UTC'), toDate32('2015-09-18', 'UTC'), 'UTC');
|
||||||
SELECT dateDiff('quarter', toDateTime('2015-08-18 00:00:00'), toDate32('2015-11-18'));
|
SELECT dateDiff('quarter', toDateTime('2015-08-18 00:00:00', 'UTC'), toDate32('2015-11-18', 'UTC'), 'UTC');
|
||||||
SELECT dateDiff('year', toDateTime('2015-08-18 00:00:00'), toDate32('2016-08-18'));
|
SELECT dateDiff('year', toDateTime('2015-08-18 00:00:00', 'UTC'), toDate32('2016-08-18', 'UTC'), 'UTC');
|
||||||
|
|
||||||
-- With Date
|
-- With Date
|
||||||
-- Date32 vs Date
|
-- Date32 vs Date
|
||||||
SELECT dateDiff('second', toDate32('2015-08-18'), toDate('2015-08-19'));
|
SELECT dateDiff('second', toDate32('2015-08-18', 'UTC'), toDate('2015-08-19', 'UTC'), 'UTC');
|
||||||
SELECT dateDiff('minute', toDate32('2015-08-18'), toDate('2015-08-19'));
|
SELECT dateDiff('minute', toDate32('2015-08-18', 'UTC'), toDate('2015-08-19', 'UTC'), 'UTC');
|
||||||
SELECT dateDiff('hour', toDate32('2015-08-18'), toDate('2015-08-19'));
|
SELECT dateDiff('hour', toDate32('2015-08-18', 'UTC'), toDate('2015-08-19', 'UTC'), 'UTC');
|
||||||
SELECT dateDiff('day', toDate32('2015-08-18'), toDate('2015-08-19'));
|
SELECT dateDiff('day', toDate32('2015-08-18', 'UTC'), toDate('2015-08-19', 'UTC'), 'UTC');
|
||||||
SELECT dateDiff('week', toDate32('2015-08-18'), toDate('2015-08-25'));
|
SELECT dateDiff('week', toDate32('2015-08-18', 'UTC'), toDate('2015-08-25', 'UTC'), 'UTC');
|
||||||
SELECT dateDiff('month', toDate32('2015-08-18'), toDate('2015-09-18'));
|
SELECT dateDiff('month', toDate32('2015-08-18', 'UTC'), toDate('2015-09-18', 'UTC'), 'UTC');
|
||||||
SELECT dateDiff('quarter', toDate32('2015-08-18'), toDate('2015-11-18'));
|
SELECT dateDiff('quarter', toDate32('2015-08-18', 'UTC'), toDate('2015-11-18', 'UTC'), 'UTC');
|
||||||
SELECT dateDiff('year', toDate32('2015-08-18'), toDate('2016-08-18'));
|
SELECT dateDiff('year', toDate32('2015-08-18', 'UTC'), toDate('2016-08-18', 'UTC'), 'UTC');
|
||||||
|
|
||||||
-- Date vs Date32
|
-- Date vs Date32
|
||||||
SELECT dateDiff('second', toDate('2015-08-18'), toDate32('2015-08-19'));
|
SELECT dateDiff('second', toDate('2015-08-18', 'UTC'), toDate32('2015-08-19', 'UTC'), 'UTC');
|
||||||
SELECT dateDiff('minute', toDate('2015-08-18'), toDate32('2015-08-19'));
|
SELECT dateDiff('minute', toDate('2015-08-18', 'UTC'), toDate32('2015-08-19', 'UTC'), 'UTC');
|
||||||
SELECT dateDiff('hour', toDate('2015-08-18'), toDate32('2015-08-19'));
|
SELECT dateDiff('hour', toDate('2015-08-18', 'UTC'), toDate32('2015-08-19', 'UTC'), 'UTC');
|
||||||
SELECT dateDiff('day', toDate('2015-08-18'), toDate32('2015-08-19'));
|
SELECT dateDiff('day', toDate('2015-08-18', 'UTC'), toDate32('2015-08-19', 'UTC'), 'UTC');
|
||||||
SELECT dateDiff('week', toDate('2015-08-18'), toDate32('2015-08-25'));
|
SELECT dateDiff('week', toDate('2015-08-18', 'UTC'), toDate32('2015-08-25', 'UTC'), 'UTC');
|
||||||
SELECT dateDiff('month', toDate('2015-08-18'), toDate32('2015-09-18'));
|
SELECT dateDiff('month', toDate('2015-08-18', 'UTC'), toDate32('2015-09-18', 'UTC'), 'UTC');
|
||||||
SELECT dateDiff('quarter', toDate('2015-08-18'), toDate32('2015-11-18'));
|
SELECT dateDiff('quarter', toDate('2015-08-18', 'UTC'), toDate32('2015-11-18', 'UTC'), 'UTC');
|
||||||
SELECT dateDiff('year', toDate('2015-08-18'), toDate32('2016-08-18'));
|
SELECT dateDiff('year', toDate('2015-08-18', 'UTC'), toDate32('2016-08-18', 'UTC'), 'UTC');
|
||||||
|
|
||||||
-- Const vs non-const columns
|
-- Const vs non-const columns
|
||||||
SELECT dateDiff('day', toDate32('1927-01-01'), materialize(toDate32('1927-01-02')));
|
SELECT dateDiff('day', toDate32('1927-01-01', 'UTC'), materialize(toDate32('1927-01-02', 'UTC')), 'UTC');
|
||||||
SELECT dateDiff('day', toDate32('1927-01-01'), materialize(toDateTime64('1927-01-02 00:00:00', 3)));
|
SELECT dateDiff('day', toDate32('1927-01-01', 'UTC'), materialize(toDateTime64('1927-01-02 00:00:00', 3, 'UTC')), 'UTC');
|
||||||
SELECT dateDiff('day', toDateTime64('1927-01-01 00:00:00', 3), materialize(toDate32('1927-01-02')));
|
SELECT dateDiff('day', toDateTime64('1927-01-01 00:00:00', 3, 'UTC'), materialize(toDate32('1927-01-02', 'UTC')), 'UTC');
|
||||||
SELECT dateDiff('day', toDate32('2015-08-18'), materialize(toDateTime('2015-08-19 00:00:00')));
|
SELECT dateDiff('day', toDate32('2015-08-18', 'UTC'), materialize(toDateTime('2015-08-19 00:00:00', 'UTC')), 'UTC');
|
||||||
SELECT dateDiff('day', toDateTime('2015-08-18 00:00:00'), materialize(toDate32('2015-08-19')));
|
SELECT dateDiff('day', toDateTime('2015-08-18 00:00:00', 'UTC'), materialize(toDate32('2015-08-19', 'UTC')), 'UTC');
|
||||||
SELECT dateDiff('day', toDate32('2015-08-18'), materialize(toDate('2015-08-19')));
|
SELECT dateDiff('day', toDate32('2015-08-18', 'UTC'), materialize(toDate('2015-08-19', 'UTC')), 'UTC');
|
||||||
SELECT dateDiff('day', toDate('2015-08-18'), materialize(toDate32('2015-08-19')));
|
SELECT dateDiff('day', toDate('2015-08-18', 'UTC'), materialize(toDate32('2015-08-19', 'UTC')), 'UTC');
|
||||||
|
|
||||||
-- Non-const vs const columns
|
-- Non-const vs const columns
|
||||||
SELECT dateDiff('day', materialize(toDate32('1927-01-01')), toDate32('1927-01-02'));
|
SELECT dateDiff('day', materialize(toDate32('1927-01-01', 'UTC')), toDate32('1927-01-02', 'UTC'), 'UTC');
|
||||||
SELECT dateDiff('day', materialize(toDate32('1927-01-01')), toDateTime64('1927-01-02 00:00:00', 3));
|
SELECT dateDiff('day', materialize(toDate32('1927-01-01', 'UTC')), toDateTime64('1927-01-02 00:00:00', 3, 'UTC'), 'UTC');
|
||||||
SELECT dateDiff('day', materialize(toDateTime64('1927-01-01 00:00:00', 3)), toDate32('1927-01-02'));
|
SELECT dateDiff('day', materialize(toDateTime64('1927-01-01 00:00:00', 3, 'UTC')), toDate32('1927-01-02', 'UTC'), 'UTC');
|
||||||
SELECT dateDiff('day', materialize(toDate32('2015-08-18')), toDateTime('2015-08-19 00:00:00'));
|
SELECT dateDiff('day', materialize(toDate32('2015-08-18', 'UTC')), toDateTime('2015-08-19 00:00:00', 'UTC'), 'UTC');
|
||||||
SELECT dateDiff('day', materialize(toDateTime('2015-08-18 00:00:00')), toDate32('2015-08-19'));
|
SELECT dateDiff('day', materialize(toDateTime('2015-08-18 00:00:00', 'UTC')), toDate32('2015-08-19', 'UTC'), 'UTC');
|
||||||
SELECT dateDiff('day', materialize(toDate32('2015-08-18')), toDate('2015-08-19'));
|
SELECT dateDiff('day', materialize(toDate32('2015-08-18', 'UTC')), toDate('2015-08-19', 'UTC'), 'UTC');
|
||||||
SELECT dateDiff('day', materialize(toDate('2015-08-18')), toDate32('2015-08-19'));
|
SELECT dateDiff('day', materialize(toDate('2015-08-18', 'UTC')), toDate32('2015-08-19', 'UTC'), 'UTC');
|
||||||
|
|
||||||
-- Non-const vs non-const columns
|
-- Non-const vs non-const columns
|
||||||
SELECT dateDiff('day', materialize(toDate32('1927-01-01')), materialize(toDate32('1927-01-02')));
|
SELECT dateDiff('day', materialize(toDate32('1927-01-01', 'UTC')), materialize(toDate32('1927-01-02', 'UTC')), 'UTC');
|
||||||
SELECT dateDiff('day', materialize(toDate32('1927-01-01')), materialize(toDateTime64('1927-01-02 00:00:00', 3)));
|
SELECT dateDiff('day', materialize(toDate32('1927-01-01', 'UTC')), materialize(toDateTime64('1927-01-02 00:00:00', 3, 'UTC')), 'UTC');
|
||||||
SELECT dateDiff('day', materialize(toDateTime64('1927-01-01 00:00:00', 3)), materialize(toDate32('1927-01-02')));
|
SELECT dateDiff('day', materialize(toDateTime64('1927-01-01 00:00:00', 3, 'UTC')), materialize(toDate32('1927-01-02', 'UTC')), 'UTC');
|
||||||
SELECT dateDiff('day', materialize(toDate32('2015-08-18')), materialize(toDateTime('2015-08-19 00:00:00')));
|
SELECT dateDiff('day', materialize(toDate32('2015-08-18', 'UTC')), materialize(toDateTime('2015-08-19 00:00:00', 'UTC')), 'UTC');
|
||||||
SELECT dateDiff('day', materialize(toDateTime('2015-08-18 00:00:00')), materialize(toDate32('2015-08-19')));
|
SELECT dateDiff('day', materialize(toDateTime('2015-08-18 00:00:00', 'UTC')), materialize(toDate32('2015-08-19', 'UTC')), 'UTC');
|
||||||
SELECT dateDiff('day', materialize(toDate32('2015-08-18')), materialize(toDate('2015-08-19')));
|
SELECT dateDiff('day', materialize(toDate32('2015-08-18', 'UTC')), materialize(toDate('2015-08-19', 'UTC')), 'UTC');
|
||||||
SELECT dateDiff('day', materialize(toDate('2015-08-18')), materialize(toDate32('2015-08-19')));
|
SELECT dateDiff('day', materialize(toDate('2015-08-18', 'UTC')), materialize(toDate32('2015-08-19', 'UTC')), 'UTC');
|
||||||
|
Loading…
Reference in New Issue
Block a user