先决条件 – 卡桑德拉
在本文中,我们将讨论 uuid()函数,该函数对于插入值和唯一生成“保证唯一”的 UID 值非常重要。
使用 uuid()函数生成有助于避免冲突的唯一 ID 的原因之一。 uuid()函数适用于插入或更新语句,并且 uuid()函数接受任何参数值来生成唯一的随机类型 4 UUID 值,该值保证唯一值。让我们通过一个例子来理解 uuid()函数。
Create table function4(Id uuid primary key, name text);
此 CQL 查询对于使用 uuid()函数插入 Id 值是不正确的。
Insert into function4 (Id, name)
values (1, ‘Ashish’); // fails
输出:
此 CQL 查询对于使用 uuid()函数插入 Id 值是正确的。
Insert into function4(Id, name)
values (now(), ‘Ashish’); //correct
输出:
一些额外的 timeuuid() 函数:
- 日期() :
此函数将提取的时间戳作为日期返回。 - 现在() :
在 Cassandra 查询语言中, now()函数可用于 UTC(世界时)标准。 Now() 方法可用于插入保证唯一的值。要将当前时间作为值插入,我们可以使用 timeuuid 函数 now() 和 dateof()。
CREATE TABLE function_test1(Id uuid primary key,
name text,
modified_date timestamp );
INSERT INTO function_test1(Id, name, modified_date)
VALUES (now(), 'Rana', '2019-10-29 00:05+0000');
INSERT INTO function_test1(Id, name, modified_date)
VALUES (now(), 'Rana', '2019-10-30 00:05+0000');
select *
from function_test1;
-
输出:
-
现在,让我们检查一下 todate()函数是如何工作的。
select todate(modified_date)
from function_test1;
-
输出:
-
对于 Cassandra 中高于 2.2.0 的更高版本,我们可以使用 toTimestamp(now())函数。
CREATE TABLE function_test2(Id uuid primary key,
name text,
modified_date timestamp );
INSERT INTO function_test2 (Id, name, modified_date)
VALUES (now(), 'Rana', toTimestamp(now()));
Select *
from function_test2;
-
输出:
- minTimeuuid() 和 maxTimeuuid() :
这两个函数分别用于查找最小和最大 timeuuid。 minTimeuuid()函数返回最小的 Timeuuid 值,maxTimeuuid()函数返回最大的 Timeuuid 值。 - unixTimestampOf() :
在 Cassandra 查询语言中,unixTimestampOf() 函数在结果集中以 ms(毫秒)为单位的 timeuuid 列的时间戳。 unixTimestampOf() 函数返回 64 位整数时间戳。
在新版本的 Cassandra 中操作日期支持一些额外的 timeuuid 和时间戳函数。它可用于插入、更新和选择语句。
Additional timeuuid and timestamp functions Name | Convert |
---|---|
toDate(timeuuid) | From timeuuid to date[YYYY-MM-DD] format. |
toTimestamp(timeuuid) | From timeuuid to timestamp format. |
toUnixTimestamp(timestamp) | From timeuuid to UNIX timestamp format. |
toDate(timestamp) | From timestamp to date[YYYY-MM-DD] format. |
toUnixTimestamp(timestamp) | From timestamp to UNIX timestamp format. |
toTimestamp(date) | From date to timestamp format. |
toUnixTimestamp(date) | From date to UNIX timestamp format. |
让我们通过一个例子来理解,
CREATE TABLE function3( Col1 int, Col2 timestamp,
Col3 timeuuid, Col4 bigint,
PRIMARY KEY(Col1, Col2, Col3, Col4));
Insert into function3(Col1, Col2, Col3, Col4)
Values (9, toUnixTimestamp(now()),
49d59e61-961b-11e8-9854-134d5b3f9cf8,
toTimestamp(now()));
SELECT *
from function3;
输出:
图 – function3 表的输出