无法强迫' 2012/11/11'到格式化的日期(长)

时间:2014-08-26 19:09:28

标签: csv cassandra cql cql3 cqlsh

我是Cassandra cql的新手(cqlsh 4.1.1,Cassandra 2.0.8.39,CQL规范3.1.1,Thrift协议19.39.0) - 使用cql COPY命令从CSV格式的文件中获取表格,我得到了以下错误:
Bad Request: unable to coerce '2012/11/11' to a formatted date (long)
如何使用cql更改列,以便它接受CSV文件中的日期?

2 个答案:

答案 0 :(得分:8)

正如Brian所说,要使CQL查询运行,需遵循CQL时间戳类型。有时看起来确实很奇怪!几周前我发现同样的问题,日期时插入如下:

INSERT INTO my_table (id,lastvisitdate) VALUES (1682221,'2012-03-25 02:26:04');

我收到了这个错误:错误请求:无法强迫' 2012-03-25 02:26:04'到格式化的日期(长)! mmmm ......日期时间似乎是正确的!

经过多次尝试和疯狂之前,我在最后添加了Z,Z代表Zulu时间,也是UTC和GMT:

INSERT INTO my_table (id,lastvisitdate) VALUES (1682221,'2012-03-25 02:26:04Z');

Yessss!有用 !所以不要忘记你的日期时间值的时区,它可能会有所帮助! ; - )

答案 1 :(得分:3)

在CQLSH中没有直接的方法可以做到这一点。

可以强制使用某组字符串日期格式。有关以下示例,请参阅CQL Timestamp type文档页面:

yyyy-mm-dd HH:mm
yyyy-mm-dd HH:mm:ss
yyyy-mm-dd HH:mmZ
yyyy-mm-dd HH:mm:ssZ
yyyy-mm-dd'T'HH:mm
yyyy-mm-dd'T'HH:mmZ
yyyy-mm-dd'T'HH:mm:ss
yyyy-mm-dd'T'HH:mm:ssZ
yyyy-mm-dd
yyyy-mm-ddZ

作为一种变通方法,您可以修改CSV文件以调整日期格式,然后导入它。 (在你的情况下,它可能就像“yyyy / mm / dd” - >“yyyy-mm-dd”一样简单。)