【问题标题】:Writing timestamps to database - gocql vs cqlsh [closed]将时间戳写入数据库 - gocql vs cqlsh [关闭]
【发布时间】:2021-04-27 14:22:59
【问题描述】:

在 cassandra 数据库中写入时间戳的所需格式:

  2021-01-17 21:51:46.195

使用 cqlsh 语法进行插入查询:

  1. 我可以使用toTimeStamp(toDate(now()))编写上述格式

  2. 使用 cqlsh,我无法使用toUnixTimestamp(now()) 编写上述格式。 toUnixTimestamp(now()) 写入格式2021-01-17 21:51:46.195000+0000


    layout := "2006-01-02T15:04:05.000Z"

    timestamp := "2021-01-17T21:51:46.195Z"
    createdDate, err := time.Parse(layout, timestamp)
    insertQueryString = "INSERT INTO mytable(created_date) " + "VALUES (?)"

gocql.Session.Query(insertQueryString, createdDate).Exec() 代码还将createdDate 写入数据库,类似于cqlsh 的toUnixTimestamp(now()) 所做的格式,即2021-01-17 21:51:46.195000+0000,如下所示:


JimB 已经解释过:“同样,time.Time 没有格式。如果需要,您可以将其格式化为字符串,这在许多其他答案中都有解释。”

但是,

如何让gocql.Session.Query(insertQueryString, createdDate).Exec()createdDate2021-01-17 21:51:46.195?因为cqlsh 能够使用toTimeStamp(toDate(now())) 编写这种所需的格式

【问题讨论】:

标签: go cassandra cql gocql


【解决方案1】:

Cassandra 不将时间戳保存为字符串,它以 long 数字存储在数据库中,毫秒精度为 8 个字节长(参见 protocol specification)。将数字转换为字符串是客户端程序的责任,cqlsh 是 Cassandra 附带的基于 python 的客户端。并且 cqlsh 具有控制如何呈现时间戳的配置选项 - 这是 cqlshrc configuration filedatetimeformat 选项,您可以自定义以根据需要打印日期。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-12-20
    • 2014-02-02
    • 2012-04-04
    • 1970-01-01
    • 2019-02-03
    • 1970-01-01
    • 1970-01-01
    • 2015-09-26
    相关资源
    最近更新 更多