首页 > 解决方案 > BigQuery 错误:无法返回相对于 Unix 纪元的 6328502092800000000 微秒的无效时间戳值

问题描述

我们在 BigQuery 中使用带有标准 SQL 的简单选择查询。

select expiration_date FROM cards

但是,它返回以下错误,

错误:无法返回相对于 Unix 纪元的 6328502092800000000 微秒的无效时间戳值。有效时间戳值的范围是 [0001-01-1 00:00:00, 9999-12-31 23:59:59.999999];

任何人都可以帮助我吗?

标签: google-bigquerybigquery-standard-sql

解决方案


您遇到的问题是标准 SQL旧版 SQLTIMESTAMP数据类型的定义不同。事实上,标准 SQL 具有更严格的有效值范围TIMESTAMP253402300799999999即最大值和-62135596800000000最小值(考虑到您的值6328502092800000000高于允许的最大值)。

作为参考,这里有TIMESTAMP两种 SQL 语言的定义:

从 Legacy SQL 到 Standrad SQL 的迁移指南提供了关于如何纠正invalid timestamp value您面临的错误的很好的指南。建议的主要两种方法如下,但请访问文档以获取有关每种方法的详细信息:

  1. 使用 UDF 过滤无效时间戳。
  2. 与时间戳列一起使用SAFE_CAST以返回NULL值而不是错误。

推荐阅读