bigquery standard sql error, invalid timestamp

一笑奈何 提交于 2019-12-11 08:53:35

问题


I'm playing with some tables in bigquery and I receive this error:

Cannot return an invalid timestamp value of -62169990264000000 microseconds relative to the Unix epoch. The range of valid timestamp values is [0001-01-1 00:00:00, 9999-12-31 23:59:59.999999]

Doing the query in legacysql and sorting ascendent it is displays as 0001-11-29 22:15:36 UTC

How does it get transformed in microseconds?

This is the query:

#standardSQL
SELECT
  birthdate
FROM
  X
WHERE
  birthdate IS NOT NULL
ORDER BY
  birthdate ASC

回答1:


Midnight of January 1 of the year 0001 (the minimum possible timestamp value in standard SQL) is -62135596800000000 in microseconds relative to the UNIX epoch, which is greater than -62169990264000000. I don't have a good explanation for legacy SQL's behavior with that timestamp value, but you can read about some suggestions for dealing with it in standard SQL in this item on the issue tracker. We plan to add some content to the migration guide about this timestamp behavior in the future as well.




回答2:


**strong text**Confirming , that in BigQuery Legacy SQL

SELECT USEC_TO_TIMESTAMP(-62169990264000000)

produces 0001-11-29 22:15:36 UTC timestamp

whereas in BigQuery Standard SQL

SELECT TIMESTAMP_MICROS(-62169990264000000)  

produces error: TIMESTAMP value is out of allowed range: from 0001-01-01 00:00:00.000000+00 to 9999-12-31 23:59:59.999999+00.

How does it get transformed in microseconds?

TIMESTAMP
You can describe TIMESTAMP data types as either UNIX timestamps or calendar datetimes. BigQuery stores TIMESTAMP data internally as a UNIX timestamp with microsecond precision.

See more about TIMESTAMP type



来源:https://stackoverflow.com/questions/41195883/bigquery-standard-sql-error-invalid-timestamp

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!