【问题标题】:How to configure CQL timestamp to %d-%m-%Y %H:%M:%S%z如何将 CQL 时间戳配置为 %d-%m-%Y %H:%M:%S%z
【发布时间】:2019-01-08 17:23:58
【问题描述】:

我在 Windows 10 Pro 上使用 Cassandra。我创建了以下表架构:

CREATE TABLE testee (
               serialno int,
               changeDate timestamp,
               value text,
               devicename text,
               PRIMARY KEY ((serialno, changeDate), changeDate)
) WITH CLUSTERING ORDER BY (changeID DESC);

给定的日期格式(时间戳)是: %d-% m-%-Y% H:%M:%S%z

Cassandra 默认时间戳为: %Y-% m-%-d% H:%M:%S%z

对于日期格式的转换,我已按照 Datastax 的说明进行操作:

https://docs.datastax.com/en/cql/3.3/cql/cql_reference/cqlshUsingCqlshrc.html

现在cqlshrc文件在:

C:\Users\tlq\.cassandra\cqlshrc

根据这个已解决的问题Cassandra Timestamp data type,'time_format' 必须插入 cqlshrc 文件的 [ui] 部分。我这样做了:

[ui]

;; Used for displaying timestamps (and reading them with COPY)
datetimeformat = %d-%m-%Y %H:%M:%S%z

;;Used for used displaying timestamps generell

time_format = %d-%m-%Y %H:%M:%S%z

通过使用插入命令:

INSERT INTO foo(serialno, changedate, devicename) VALUES(2,'07-12-2011 13:56:20','fooname',34);

以下消息仍然出现

InvalidRequest:来自服务器的错误:code=2200 [Invalid query] message="Unable to >coerce '07-12-2014 13:56:20' to a formatted date (long)"

【问题讨论】:

  • 你也用 CQLSHRC="C:\Users\tlq\ .cassandra\cqlshrc" 来启动 cqlsh 吗?我不确定这在 Windows 上的效果如何,但也许你需要转义一些字符。基本上我要问的是:你确定你的 cqlshrc 文件被使用了吗?您能否为主机或端口添加一些错误配置以验证文件是否已使用。
  • 我听从了您的建议,尝试了错误的端口 (9041) 和主机 (127.0.0.2)。 cqlshrc 似乎在正确的位置: Connection error: ('Unable to connect to any servers', {'127.0.0.2': error (10061, "Tried connected to [('127.0.0.2', 9041)] Last错误:无法建立连接,因为目标机器主动拒绝它")}}
  • 你用什么插入它?在大多数语言中,将日期转换为时间戳(长)是微不足道的,这消除了很多歧义。
  • 我们使用 sql: SELECT convert(datetime, '22-10-2013 20:44:11', 120) -- yyyy-mm-dd hh:mm:ss(24h)

标签: cassandra timestamp cql


【解决方案1】:

您在cqlshrc 文件中指定的选项用于显示数据,而不是用于输入字符串。 Cassandra 接受以下格式的数据,如documentation 所述:

yyyy-mm-dd[(T|)HH:MM:SS[.fff]][(+|-)NNNN]

所以你需要以正确的顺序指定日期:年-月-日...

附:当您不指定时区时,它取自客户端的配置 - 您需要通过将 timezone 参数添加到 cqlshrc 文件(相同的 [ui] 部分)来指定您的默认时区,如下所示:

timezone = Etc/UTC

另请参阅documentation,其中讨论了安装可选包,例如pytz

【讨论】:

    猜你喜欢
    • 2021-11-26
    • 1970-01-01
    • 2020-05-09
    • 2016-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-28
    • 1970-01-01
    相关资源
    最近更新 更多