-2

在 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()))

4

1 回答 1

2

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

于 2021-01-23T10:23:06.967 回答