有没有办法将 writetime() 返回的值转换为 Scylla CQL 中可读的日期?

问题描述 投票:0回答:1

我正在 CQL 中寻找一种简单的方法来显示 writetime() 返回的时间戳的人类可读形式。我在谷歌上找不到任何东西,这可能吗?

cassandra cql scylla
1个回答
0
投票

理论上,CQL(ScyllaDB 和 Cassandra)中写入中使用的 timestamp 只是一个数字 - 数字越大表示更新越新,因此它们在 冲突解决 中获胜。理论上,CQL 更新可以通过在写入时添加“USING TIMESTAMP”选项来指定任何随机且无意义的数字作为时间戳。

但是,作为惯例,我们几乎总是使用 自 UNIX 纪元(1970 年 1 月 1 日)以来的微秒数。当服务器被要求选择一个时间戳(这也包括 LWT 的情况)时,以及库实现(使用当前时间来计算客户端时间戳)时,都会强制执行此约定,因此无论出于何种意图和目的,您可以假设您在应用程序中使用

writetime()
读取的时间戳将是这样的 - 自纪元以来的微秒数。

您可以使用应用程序语言中存在的任何工具来转换日期格式,将这些数字转换为其他格式。例如在 Python 中:

>>> writetime=1699782709000000
>>> from time import strftime, gmtime
>>> strftime('%Y-%m-%d %H:%M:%S', gmtime(writetime/1e6))
'2023-11-12 09:51:49'

注意我们如何将 writetime 除以

1e6
(即 100 万),将微秒转换为自纪元以来的秒数,然后使用
gmtime()
表示该数字使用 GMT(又名 UTC)时区,而不是您本地的时区计算机,最后
strftime()
将其转换为您选择的格式的日期字符串。

© www.soinside.com 2019 - 2024. All rights reserved.