BigQuery 标准 SQL 错误,当日期字段根本没有被触及时时间戳无效



这里的答案对我没有帮助。尽管我在相当简单的更新查询中遇到了类似的问题,如下所示(想法是将 sha-256 编码添加到旧记录中(。

UPDATE 
'customer.customers` 
SET emailHashCode = (SELECT 
TO_HEX(SHA256(e.emailAddress))
FROM
`customer.customers`,
UNNEST(emailAddresses) AS e LIMIT 1)
WHERE emailHashCode IS NULL

我收到此错误:

无法返回相对于 Unix 纪元的无效时间戳值 -62135600400000000 微秒。有效时间戳值的范围为 [0001-01-1 00:00:00, 9999-12-31 23:59:59.999999];写入字段出生日期时出错

表中有一个 dataOfBirth 字段,但它没有被触及。好奇是否缺少一些基本的东西?感谢您提供任何线索!

在跳到时间戳问题之前 - 首先,我想提一下您的初始查询很可能不正确 - 我建议您考虑下面的一个(假设emailAddresses是重复记录,其中包含emailAddress字段(

UPDATE 'customer.customers` 
SET emailHashCode = (
SELECT TO_HEX(SHA256(e.emailAddress))
FROM UNNEST(emailAddresses) AS e 
LIMIT 1
)
WHERE emailHashCode IS NULL

所以,现在回到你的问题:正如 Elliott 提到的 - 你需要更新无效的时间戳作为同一查询的一部分。我还没有测试过 - 但在下面尝试

UPDATE 'customer.customers` 
SET emailHashCode = (
SELECT TO_HEX(SHA256(e.emailAddress))
FROM UNNEST(emailAddresses) AS e 
LIMIT 1
), dateOfBirth = SAFE_CAST(dateOfBirth AS TIMESTAMP)
WHERE emailHashCode IS NULL

我遇到了同样的问题,最简单的方法是修复所有具有错误dataOfBirth值的行。

我曾经SAFE_CAST来做到这一点,请尝试以下操作:

SAFE_CAST(dataOfBirth AS STRING) AS dataOfBirthString

希望对您有所帮助!

最新更新