You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Cassandra 3.11.13中如何获取对应时区的时间戳数据?

解决Cassandra时区查询与CSV导出问题

一、正确查询指定时区的时间范围

Cassandra的timestamp类型本质存储的是UTC时间戳,直接使用带时区的字符串查询时,Cassandra会自动转换为UTC,但更直观可靠的方式是将存储时间转换为目标时区后再做比较:

方法1:使用时区偏移量

SELECT * FROM table_name 
WHERE primary_key = 'smth' 
  AND timestamp AT TIME ZONE '+06:00' > '2022-10-14T06:30:00' 
  AND timestamp AT TIME ZONE '+06:00' < '2022-10-14T23:59:59';

方法2:使用时区名称(推荐)

哈萨克斯坦标准时区为Asia/Almaty,用时区名称可避免夏令时变动影响:

SELECT * FROM table_name 
WHERE primary_key = 'smth' 
  AND timestamp AT TIME ZONE 'Asia/Almaty' > '2022-10-14T06:30:00' 
  AND timestamp AT TIME ZONE 'Asia/Almaty' < '2022-10-14T23:59:59';

如果手动转换UTC时间查询,需将GMT+6的时间转成UTC后编写条件:

  • GMT+6的2022-10-14T06:30:00对应UTC的2022-10-14T00:30:00
  • GMT+6的2022-10-14T23:59:59对应UTC的2022-10-15T03:59:59
    查询语句如下:
SELECT * FROM table_name 
WHERE primary_key = 'smth' 
  AND timestamp > '2022-10-14T00:30:00+0000' 
  AND timestamp < '2022-10-15T03:59:59+0000';

二、导出CSV时获取GMT+6时区的时间

默认导出的timestamp列是UTC格式,需在查询中先转换为目标时区的时间再导出:

SELECT primary_key,
       -- 将UTC时间转换为Asia/Almaty时区的时间戳
       timestamp AT TIME ZONE 'Asia/Almaty' AS local_timestamp,
       -- 其他需要导出的列
       col1, col2
FROM table_name 
WHERE primary_key = 'smth' 
  AND timestamp AT TIME ZONE 'Asia/Almaty' > '2022-10-14T06:30:00' 
  AND timestamp AT TIME ZONE 'Asia/Almaty' < '2022-10-14T23:59:59';

执行上述查询后导出CSV,local_timestamp列将显示GMT+6时区的时间(如2022-10-14 07:51:00.000000+0600)。


内容的提问来源于stack exchange,提问作者Midas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 19:35:23