BigQuery中19位整数时间戳转YYYY-MM-DD日期的问题
BigQuery中19位纳秒级时间戳转日期的解决方案
你的19位整数是纳秒级Unix时间戳(从1970-01-01 00:00:00 UTC开始的纳秒数),之前的函数报错核心原因是单位不匹配或函数用途错误,以下是正确的处理方法:
正确代码示例
方法1:转微秒后生成日期
SELECT DATE(TIMESTAMP_MICROS(SAFE_DIVIDE(create_date, 1000))) AS formatted_date FROM your_table;
方法2:转秒后格式化日期
SELECT FORMAT_TIMESTAMP("%Y-%m-%d", TIMESTAMP_SECONDS(SAFE_DIVIDE(create_date, 1000000000))) AS formatted_date FROM your_table;
之前方法的问题说明
FORMAT_TIMESTAMP("%Y-%m-%d", create_date):直接传入整数会被BigQuery识别为日期的整数编码(如20230901),19位数值远超合法范围,导致报错。SAFE.TIMESTAMP_MICROS(create_date):TIMESTAMP_MICROS仅支持微秒级时间戳(最大约1e18),19位纳秒数值超出其范围,触发"超出范围"错误。DATE_FROM_UNIX_DATE(create_date):该函数用于将"1970-01-01起的天数"转为日期,19位整数对应的天数完全不符合函数预期,报错。PARSE_DATE('%Y%m%d', CAST(create_date)):将19位整数转为字符串后,格式与%Y%m%d(如20230901)完全不匹配,解析失败。
内容的提问来源于stack exchange,提问作者RAD
相关产品推荐
相关产品推荐

