如何将Firebase时间戳转换为Snowflake TIMESTAMP格式?
Snowflake中Firebase时间戳转TIMESTAMP格式方案
直接从原始JSON解析(推荐)
不用先提取整个createdAt为字符串,直接从data字段里解析_seconds和_nanoseconds:
SELECT TO_TIMESTAMP_NTZ( data:createdAt:_seconds::NUMBER, data:createdAt:_nanoseconds::NUMBER / 1000000 ) AS created_at_timestamp FROM your_firebase_table;
如果习惯用json_extract_path_text函数,也可以这么写:
SELECT TO_TIMESTAMP_NTZ( json_extract_path_text(data, 'createdAt', '_seconds')::NUMBER, json_extract_path_text(data, 'createdAt', '_nanoseconds')::NUMBER / 1000000 ) AS created_at_timestamp FROM your_firebase_table;
处理已提取的字符串形式JSON
如果你的视图已经把createdAt提取成了字符串列(比如列名created_at_str,值为{"_nanoseconds":248000000,"_seconds":1641850613}),可以先转成JSON对象再解析:
SELECT TO_TIMESTAMP_NTZ( PARSE_JSON(created_at_str):_seconds::NUMBER, PARSE_JSON(created_at_str):_nanoseconds::NUMBER / 1000000 ) AS created_at_timestamp FROM your_view;
关键说明
- 用
TO_TIMESTAMP_NTZ生成不带时区的时间戳,若需要带时区,可替换为TO_TIMESTAMP_TZ并指定时区(例如TO_TIMESTAMP_TZ(..., 'UTC'))。 - Firebase返回的
_nanoseconds是纳秒单位,Snowflake的时间戳函数第二个参数接受毫秒数,因此需要除以1000000做单位转换。
内容的提问来源于stack exchange,提问作者user18162889
相关产品推荐
相关产品推荐

