【问题标题】:unable to coerce '2012/11/11' to a formatted date (long)无法将“2012/11/11”强制转换为格式化日期(长)
【发布时间】:2014-10-20 05:29:48
【问题描述】:

我是 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 文件中的日期?

【问题讨论】:

    标签: csv cassandra cql cql3 cqlsh


    【解决方案1】:

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

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

    我收到此错误:错误请求:无法将“2012-03-25 02:26:04”强制转换为格式化日期(长)!嗯......太糟糕了,因为日期时间似乎是正确的!

    经过多次尝试,在发疯之前,我刚刚在时间末尾添加了一个 Z,Z 代表祖鲁时间,也就是 UTC 和 GMT:

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

    是的!有用 !所以不要忘记您的日期时间值中的时区,这可能会有所帮助! ;-)

    【讨论】:

      【解决方案2】:

      在 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”一样简单。)

      【讨论】:

        猜你喜欢
        • 2020-01-17
        • 2022-11-16
        • 1970-01-01
        • 2015-05-15
        • 2016-07-27
        • 2018-05-14
        • 1970-01-01
        • 2019-03-31
        • 1970-01-01
        相关资源
        最近更新 更多