尝试在标准SQL BigQuery中使用CAST将十六进制时间戳转换为十进制

时间:2018-07-04 10:25:14

标签: google-bigquery standard-sql

所以我正在尝试从this

这样的UUID中提取时间戳记

我被困在将十六进制字符串转换为十进制整数的步骤上。据我了解,这应该起作用:

SELECT CAST("1e78c9e03144170" AS INT64) as hex_to_dec

我期望得到答案:136865943201620000

但是我得到了错误:

  

错误:无法将文字“ 1e78c9e03144170”强制转换为[1:13]类型的INT64

1 个答案:

答案 0 :(得分:3)

以下是用于BigQuery标准SQL

SELECT hex_val, CAST(CONCAT('0x', hex_val) AS INT64) AS hex_to_dec

您可以在下面进行测试

#standardSQL
WITH `project.dataset.table` AS (
  SELECT '1e78c9e03144170' hex_val
)
SELECT hex_val, CAST(CONCAT('0x', hex_val) AS INT64) AS hex_to_dec
FROM `project.dataset.table`   

结果是

Row     hex_val             hex_to_dec   
1       1e78c9e03144170     137232923942470000    

注意:您对136865943201620000的预期结果不正确。正确的是137232923942470000
您可以验证它,例如here