google-bigquery - 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];
任何人都可以帮助我吗?
解决方案
您遇到的问题是标准 SQL和旧版 SQL对TIMESTAMP
数据类型的定义不同。事实上,标准 SQL 具有更严格的有效值范围TIMESTAMP
,253402300799999999
即最大值和-62135596800000000
最小值(考虑到您的值6328502092800000000
高于允许的最大值)。
作为参考,这里有TIMESTAMP
两种 SQL 语言的定义:
从 Legacy SQL 到 Standrad SQL 的迁移指南提供了关于如何纠正invalid timestamp value
您面临的错误的很好的指南。建议的主要两种方法如下,但请访问文档以获取有关每种方法的详细信息:
- 使用 UDF 过滤无效时间戳。
- 与时间戳列一起使用
SAFE_CAST
以返回NULL
值而不是错误。
推荐阅读
- c++ - 右键单击文档图标时如何获取上下文菜单项列表
- .net - 授权 Web 应用程序的用户并允许他们访问 API 服务
- elasticsearch - 比较两个数字字段elasticsearch
- nativescript - ScrollView 内带有 ngFor 的 StackLayout
- c++ - 在 C++ 中连接两个字符
- selenium - 无法在并行模式下执行套件
- php - 联系表格 7 将数据传递给 Ajax 谢谢你的消息
- python - 为什么可以在不表示'self'关键字的情况下初始化python类属性?
- ruby-on-rails - STRIPE ROR:没有路线匹配费用/新错误
- angular - 在 Angular 的父模板中调用子组件的方法是一种好习惯吗?