Cassandra 数据库 CQL 语法之日期时间类型操作指南

Cassandra 数据库阿木 发布于 2025-07-04 13 次阅读


Cassandra 数据库 CQL 语法之日期时间类型操作指南

Cassandra 是一个开源的分布式 NoSQL 数据库,它提供了高可用性、高性能和可伸缩性。Cassandra 使用 CQL(Cassandra Query Language)作为其查询语言,类似于 SQL。在 CQL 中,日期时间类型是处理时间序列数据的重要部分。本文将深入探讨 Cassandra 中日期时间类型的操作,包括数据类型、常用函数和查询示例。

1. 日期时间数据类型

Cassandra 支持以下几种日期时间数据类型:

- `timestamp`: 64位整数,表示自纪元以来的毫秒数。

- `date`: 32位整数,表示自纪元以来的天数。

- `time`: 64位整数,表示自午夜以来的毫秒数。

- `datetime`: 64位整数,表示自纪元以来的毫秒数,包括日期和时间信息。

- `timestamptz`: 与 `timestamp` 类似,但包含时区信息。

1.1 创建表时指定日期时间类型

在创建表时,你可以指定列的日期时间类型。以下是一个示例:

sql

CREATE TABLE example (


id uuid,


created_at timestamp,


updated_at timestamp,


PRIMARY KEY (id)


);


在这个例子中,`created_at` 和 `updated_at` 列被指定为 `timestamp` 类型。

1.2 使用内置函数处理日期时间

Cassandra 提供了一系列内置函数来处理日期时间数据类型。以下是一些常用的函数:

- `toTimestamp`: 将字符串转换为 `timestamp` 类型。

- `toDate`: 将字符串转换为 `date` 类型。

- `toTime`: 将字符串转换为 `time` 类型。

- `toDateTime`: 将字符串转换为 `datetime` 类型。

- `toTimestamptz`: 将字符串转换为带时区的 `timestamp` 类型。

以下是一个使用这些函数的示例:

sql

SELECT toTimestamp('2023-01-01 12:00:00'), toDate('2023-01-01'), toTime('12:00:00'), toDateTime('2023-01-01 12:00:00'), toTimestamptz('2023-01-01 12:00:00+0800');


2. 日期时间函数

Cassandra 提供了丰富的日期时间函数,可以用于计算、格式化和提取日期时间信息。以下是一些常用的日期时间函数:

- `currentTimestamp()`: 返回当前时间戳。

- `toEpochDay(date)`: 返回日期的纪元天数。

- `toEpochMilli(timestamp)`: 返回时间戳的毫秒数。

- `fromEpochDay(epochDay)`: 返回纪元天数对应的日期。

- `fromEpochMilli(epochMilli)`: 返回毫秒数对应的时间戳。

- `dateOf(timestamp)`: 返回时间戳对应的日期。

- `timeOf(timestamp)`: 返回时间戳对应的时间。

- `toLocalTime(timestamp)`: 返回时间戳对应的本地时间。

- `toLocalDate(timestamp)`: 返回时间戳对应的本地日期。

- `toLocalDateTime(timestamp)`: 返回时间戳对应的本地日期和时间。

以下是一个使用日期时间函数的示例:

sql

SELECT currentTimestamp(), toEpochDay('2023-01-01'), fromEpochDay(2459490), dateOf(currentTimestamp()), timeOf(currentTimestamp()), toLocalTime(currentTimestamp()), toLocalDate(currentTimestamp()), toLocalDateTime(currentTimestamp());


3. 日期时间查询

在 Cassandra 中,你可以使用日期时间类型进行各种查询,包括范围查询、比较查询和格式化查询。

3.1 范围查询

以下是一个使用 `timestamp` 列进行范围查询的示例:

sql

SELECT FROM example WHERE created_at >= toTimestamp('2023-01-01 00:00:00') AND created_at < toTimestamp('2023-01-02 00:00:00');


3.2 比较查询

以下是一个使用 `datetime` 列进行比较查询的示例:

sql

SELECT FROM example WHERE updated_at > toDateTime('2023-01-01 12:00:00');


3.3 格式化查询

以下是一个使用 `toLocalDateTime` 函数格式化日期时间查询的示例:

sql

SELECT id, toLocalDateTime(updated_at) AS formatted_updated_at FROM example;


4. 总结

Cassandra 的日期时间类型和函数为处理时间序列数据提供了强大的工具。通过使用这些类型和函数,你可以轻松地进行日期时间计算、格式化和查询。本文介绍了 Cassandra 中日期时间类型的基本概念、常用函数和查询示例,希望对您在 Cassandra 数据库中使用日期时间类型有所帮助。

5. 扩展阅读

- [Cassandra CQL Reference](https://cassandra.apache.org/doc/latest/cql/cql3.htmldate-and-time-functions)

- [Cassandra Date and Time Functions](https://www.datastax.com/dev/blog/cassandra-date-and-time-functions)

- [Cassandra CQL Tutorial](https://www.tutorialspoint.com/cassandra/cassandra_cql_tutorial.htm)

通过阅读这些资源,您可以更深入地了解 Cassandra 的日期时间操作。