无法强制转换为格式化日期 - Cassandra 时间戳类型
Unable to coerce to a formatted date - Cassandra timestamp type
我在 cassandra table 中为 时间戳类型 列存储了值,格式为
2018-10-27 11:36:37.950000+0000(格林威治标准时间日期)。
我 Unable to coerce '2018-10-27 11:36:37.950000+0000' to a formatted date (long) 当我 运行 下面查询获取数据时.
select create_date from test_table where create_date='2018-10-27 11:36:37.950000+0000' allow filtering;
如果数据已存储在 table(格式为 2018-10-27 11:36:37.950000+0000)并执行范围 (>=或 <=) create_date 列上的操作?
我试过 create_date='2018-10-27 11:36:37.95Z',
create_date='2018-10-27 11:36:37.95'
create_date='2018-10-27 11:36:37.95'
也是。
是否可以对这种时间戳类型的数据进行过滤?
P.S。使用 cqlsh 运行 查询 cassandra table.
在第一种情况下,问题是您用微秒指定时间戳,而 Cassandra 以毫秒运行 - 尝试删除最后三位数字 - .950
而不是 .950000
(请参阅此 document for details). The timestamps are stored inside Cassandra as 64-bit number, and then formatted when printing results using the format specified by datetimeformat
options of cqlshrc
(see doc).没有明确时区的日期将需要在 cqlshrc
.
中指定默认时区
关于您关于过滤数据的问题 - 此查询仅适用于少量数据,对于较大的数据量很可能会超时,因为它需要扫描集群中的所有数据。此外,数据不会正确排序,因为排序仅在单个分区内发生。
如果你想进行这样的查询,那么或许Spark Cassandra Connector会是更好的选择,因为它可以有效select需要的数据,然后你可以进行排序等。虽然这会需要更多资源。
我建议学习 DataStax Academy 的 DS220 课程,以了解如何为 Cassandra 建模数据。
这对我有用
var datetime = DateTime.UtcNow.ToString("yyyy-MM-dd HH:MM:ss");
var query = $"SET updatedat = '{datetime}' WHERE ...
我在 cassandra table 中为 时间戳类型 列存储了值,格式为 2018-10-27 11:36:37.950000+0000(格林威治标准时间日期)。 我 Unable to coerce '2018-10-27 11:36:37.950000+0000' to a formatted date (long) 当我 运行 下面查询获取数据时.
select create_date from test_table where create_date='2018-10-27 11:36:37.950000+0000' allow filtering;
如果数据已存储在 table(格式为 2018-10-27 11:36:37.950000+0000)并执行范围 (>=或 <=) create_date 列上的操作?
我试过 create_date='2018-10-27 11:36:37.95Z',
create_date='2018-10-27 11:36:37.95'
create_date='2018-10-27 11:36:37.95'
也是。
是否可以对这种时间戳类型的数据进行过滤?
P.S。使用 cqlsh 运行 查询 cassandra table.
在第一种情况下,问题是您用微秒指定时间戳,而 Cassandra 以毫秒运行 - 尝试删除最后三位数字 - .950
而不是 .950000
(请参阅此 document for details). The timestamps are stored inside Cassandra as 64-bit number, and then formatted when printing results using the format specified by datetimeformat
options of cqlshrc
(see doc).没有明确时区的日期将需要在 cqlshrc
.
关于您关于过滤数据的问题 - 此查询仅适用于少量数据,对于较大的数据量很可能会超时,因为它需要扫描集群中的所有数据。此外,数据不会正确排序,因为排序仅在单个分区内发生。
如果你想进行这样的查询,那么或许Spark Cassandra Connector会是更好的选择,因为它可以有效select需要的数据,然后你可以进行排序等。虽然这会需要更多资源。
我建议学习 DataStax Academy 的 DS220 课程,以了解如何为 Cassandra 建模数据。
这对我有用
var datetime = DateTime.UtcNow.ToString("yyyy-MM-dd HH:MM:ss");
var query = $"SET updatedat = '{datetime}' WHERE ...