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

Apache Calcite设置时区参数无效,如何获取UTC时间?

解决Apache Calcite中获取UTC时间的问题

方法1:直接在查询中做时区转换

绕过会话时区设置,直接对时间函数结果做UTC转换,这是最直接的方式:

-- 获取带日期的UTC时间戳
SELECT CURRENT_TIMESTAMP AT TIME ZONE 'UTC' AS utc_timestamp;

-- 仅获取UTC时间部分
SELECT CAST(CURRENT_TIMESTAMP AT TIME ZONE 'UTC' AS TIME) AS utc_time;

方法2:在CSV Schema配置中指定时区

连接字符串的timeZone参数对CSV适配器不生效,需要将时区配置放在Schema的operand中,修改你的model.json配置文件:

{
  "version": "1.0",
  "defaultSchema": "csv",
  "schemas": [
    {
      "name": "csv",
      "type": "custom",
      "factory": "org.apache.calcite.adapter.csv.CsvSchemaFactory",
      "operand": {
        "directory": "你的CSV文件路径",
        "timeZone": "UTC"
      }
    }
  ]
}

配置完成后,CURRENT_TIME和LOCALTIME会返回UTC时区的时间。

方法3:通过JVM参数全局设置时区

启动运行Calcite的Java程序时,添加以下JVM参数,强制全局时区为UTC:

-Duser.timezone=UTC

该方式会影响JVM内所有时间相关操作,包括Calcite的时间函数。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 01:42:07