更新时间和离开卡桑德拉行的剩余时间
Update time and remaining time to leave for cassandra row
我如何知道某行何时被写入,何时被丢弃?
我搜索了该信息,但找不到。
谢谢。
使用cql中的writetime方法获取列的写入时间。
select writetime(column) from tablename where clause
在 SELECT
语句中使用 WRITETIME
函数将 return date/time 在 微秒 内写入该列到数据库。
例如:
select writetime(login) from user;
会 return 像:
writetime(login)
------------------
1439082127862000
当您插入以秒为单位的 TTL(生存时间)的行时,例如:
INSERT INTO user(login) VALUES ('admin') USING TTL 60;
在 SELECT
语句中使用 TTL
函数将 return 插入的数据必须存在 秒 的数量。
例如:
select ttl(login) from user;
会 return 像:
ttl(login)
------------------
59
如果您不指定 TTL,上述查询将 return:
ttl(login)
------------------
null
如果您使用的是 Casandra 2.2+,则可以创建一个用户定义函数 (UDF) 以将 WRITETIME
编辑的微秒 return 转换为更易读的格式。
要使用用户定义的函数,enable_user_defined_functions
必须在 cassandra.yaml
文件中设置为 true
。
然后,在 cqlsh
中创建如下函数:
CREATE OR REPLACE FUNCTION microsToFormattedDate (input bigint) CALLED ON NULL INPUT RETURNS text LANGUAGE java AS 'return new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss,SSS").format( new java.util.Date(input / 1000) );';
用户定义的函数是在键空间中定义的。如果没有定义键空间,则使用当前键空间。
现在使用函数:
select microsToFormattedDate( writetime(login) ) from user;
会不会return像这样:
social.microstoformatteddate(writetime(login))
-----------------------------------------------
2015-08-08 20:02:07,862
我如何知道某行何时被写入,何时被丢弃? 我搜索了该信息,但找不到。
谢谢。
使用cql中的writetime方法获取列的写入时间。
select writetime(column) from tablename where clause
在 SELECT
语句中使用 WRITETIME
函数将 return date/time 在 微秒 内写入该列到数据库。
例如:
select writetime(login) from user;
会 return 像:
writetime(login)
------------------
1439082127862000
当您插入以秒为单位的 TTL(生存时间)的行时,例如:
INSERT INTO user(login) VALUES ('admin') USING TTL 60;
在 SELECT
语句中使用 TTL
函数将 return 插入的数据必须存在 秒 的数量。
例如:
select ttl(login) from user;
会 return 像:
ttl(login)
------------------
59
如果您不指定 TTL,上述查询将 return:
ttl(login)
------------------
null
如果您使用的是 Casandra 2.2+,则可以创建一个用户定义函数 (UDF) 以将 WRITETIME
编辑的微秒 return 转换为更易读的格式。
要使用用户定义的函数,enable_user_defined_functions
必须在 cassandra.yaml
文件中设置为 true
。
然后,在 cqlsh
中创建如下函数:
CREATE OR REPLACE FUNCTION microsToFormattedDate (input bigint) CALLED ON NULL INPUT RETURNS text LANGUAGE java AS 'return new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss,SSS").format( new java.util.Date(input / 1000) );';
用户定义的函数是在键空间中定义的。如果没有定义键空间,则使用当前键空间。
现在使用函数:
select microsToFormattedDate( writetime(login) ) from user;
会不会return像这样:
social.microstoformatteddate(writetime(login))
-----------------------------------------------
2015-08-08 20:02:07,862