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

Snowflake中可读日期/时间转Unix时间戳及时区问题咨询

解答

1. 将日期/日期时间转换为Unix时间戳

Snowflake提供了TO_UNIXTIME()函数,作为TO_TIMESTAMP()的反向操作,可直接将日期、日期时间类型的值转换成Unix时间戳(即从1970-01-01 00:00:00 UTC开始累计的秒数)。

针对你的两列数据,具体用法如下:

  • 处理last_used(带时分的日期时间列):
SELECT TO_UNIXTIME(last_used) AS last_used_unix
FROM your_table;
  • 处理date(仅日期列):
SELECT TO_UNIXTIME(date) AS date_unix
FROM your_table;

注:传入纯日期值时,Snowflake会默认将时间部分补为00:00:00后再转换。

2. Unix时间戳的时区感知问题

Unix时间戳本身是无时区属性的,它本质是UTC纪元起点到目标时间的秒数,代表UTC时间线上的一个绝对节点。但在Snowflake的转换逻辑中需要注意两点:

  • 如果输入列是不带时区的类型(比如TIMESTAMP_NTZ或DATE),Snowflake会使用当前会话的时区将其转换为UTC时间,再计算Unix时间戳。
  • 如果输入列是带时区的类型(比如TIMESTAMP_TZ),Snowflake会直接基于列自带的时区信息转换为UTC时间,再生成对应的Unix时间戳。

举个实际场景:若会话时区设为Asia/Shanghai,你输入的last_used是2023-12-01 20:24(TIMESTAMP_NTZ类型),Snowflake会先把这个时间识别为上海时区的时间,转成UTC的2023-12-01 12:24,再计算对应的Unix时间戳。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 22:05:02