BigQuery标准SQL错误,无法触及日期字段时的无效时间戳

时间:2018-05-23 14:09:59

标签: google-bigquery

答案here对我没有帮助。虽然我在一个相当简单的更新查询中遇到类似的问题,如下所示(想法是将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];写作字段dateOfBirth中的错误

表格中有一个dataOfBirth字段,但未被触及。好奇如果缺少基本的东西?谢谢你的任何线索!

2 个答案:

答案 0 :(得分:0)

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

我使用SAFE_CAST来执行此操作,请尝试以下操作:

SAFE_CAST(dataOfBirth AS STRING) AS dataOfBirthString

希望有帮助!

答案 1 :(得分:0)

在讨论时间戳问题之前-首先,我想提一下您的初始查询很可能不正确-我建议您考虑考虑以下问题(假设emailAddresses与{{ 1}}字段)

   
emailAddress

因此,现在回到您的问题:如Elliott所述-您需要在同一查询中更新无效时间戳。我尚未测试-但请尝试以下

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