卡桑德拉解析日期

时间:2017-02-01 10:52:49

标签: cassandra cql

我有一个使用以下脚本创建的表:

CREATE TABLE "TestTable2" (
    id uuid,
    timestamp timestamp,
    msg text,
    priority int,
    source text,
    PRIMARY KEY (id, timestamp)
);

现在我插入一行:

INSERT INTO "TestTable2" (id, timestamp, msg, source) values (uuid(), '2002-03-31 02:36:10', 'asdas dasdasd', 'system1');

我收到错误:

  

无法在'UdcCluster'上执行CQL脚本:无法将'2002-03-31 02:36:10'强制转换为格式化日期(长)

如果我将月份的日期更改为30或小时为22,则语句成功执行。 你能告诉我这个日期有什么问题吗?

PS。 同样的错误重复'1998-03-29 02:12:13','1987-03-29 02:55:21'和'1984-03-25 02:45:25'。在所有情况下,它都是在3月底的凌晨2点......

1 个答案:

答案 0 :(得分:0)

您正试图从特定的本地时间到达DateTime实例,并且您希望它能够抵御夏令时。

在模式中指定时区:yyyy-mm-dd HH:mm:ssZ

  

其中Z是RFC-822 4位数时区,表示时区   与UTC的区别。例如,对于1月2日的日期和时间,   2003年,格林威治标准时间04:05:00:

     

如果未指定时区,则为Cassandra的时区   使用处理写请求的协调器节点。为了准确,   DataStax建议指定时区而不是依赖   在Cassandra节点上配置的时区。

https://docs.datastax.com/en/cql/3.1/cql/cql_reference/timestamp_type_r.html