无法将'2012/11/11'强制转换为格式化日期(长)

Fra*_*ank 3 csv cql cassandra 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文件中的日期?

小智 9

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

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

我收到此错误:错误请求:无法强制'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');
Run Code Online (Sandbox Code Playgroud)

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


Bri*_*anC 4

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

有一组可以强制的字符串日期格式。请参阅CQL Timestamp 类型文档页面以获取一些示例,例如:

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
Run Code Online (Sandbox Code Playgroud)

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