SQL中将INT64类型时间戳转换为日期报错求助
解决BigQuery中INT64时间戳转日期/时间戳的报错问题
这个问题我之前也碰到过,其实是BigQuery的TIMESTAMP()函数本身就不支持直接传入INT64类型的时间戳——它只认字符串、DATE或者DATETIME类型的输入,所以才会报你看到的No matching signature for function TIMESTAMP for argument types: INT64错误。
要解决这个问题,你需要根据你的INT64时间戳的精度,选择对应的专用转换函数:
1. 秒级时间戳(比如1620000000这类10位整数)
用TIMESTAMP_SECONDS()函数转换为时间戳,如果要直接转成DATE类型,再套一层DATE():
-- 转成TIMESTAMP类型 SELECT TIMESTAMP_SECONDS(your_int64_timestamp_column) AS converted_timestamp FROM your_table; -- 直接转成DATE类型 SELECT DATE(TIMESTAMP_SECONDS(your_int64_timestamp_column)) AS converted_date FROM your_table;
2. 毫秒级时间戳(比如1620000000000这类13位整数)
用TIMESTAMP_MILLIS()函数:
-- 转成TIMESTAMP类型 SELECT TIMESTAMP_MILLIS(your_int64_timestamp_column) AS converted_timestamp FROM your_table; -- 转成DATE类型 SELECT DATE(TIMESTAMP_MILLIS(your_int64_timestamp_column)) AS converted_date FROM your_table;
3. 微秒级时间戳(比如1620000000000000这类16位整数)
用TIMESTAMP_MICROS()函数:
-- 转成TIMESTAMP类型 SELECT TIMESTAMP_MICROS(your_int64_timestamp_column) AS converted_timestamp FROM your_table; -- 转成DATE类型 SELECT DATE(TIMESTAMP_MICROS(your_int64_timestamp_column)) AS converted_date FROM your_table;
简单来说,先把INT64的时间戳通过对应精度的函数转成TIMESTAMP,再按需转成DATE类型就可以了。
内容的提问来源于stack exchange,提问作者user9323395
相关产品推荐
相关产品推荐

