大查询:在SQL Standard中将float64转换为日期

时间:2017-01-06 20:53:47

标签: google-bigquery

我想将float64转换为date / datetime?

我有一个内容为1.483653436E9的字段如何将其转换为日期?

由于

1 个答案:

答案 0 :(得分:6)

尝试以下作为示例

#legacySQL
SELECT 
  ts_original, 
  ts_as_float, 
  USEC_TO_TIMESTAMP(CAST(ts_as_float AS INTEGER)) AS ts,
  DATE(USEC_TO_TIMESTAMP(CAST(ts_as_float AS INTEGER))) AS dt
FROM (SELECT CURRENT_TIMESTAMP() AS ts_original, 
      CAST(TIMESTAMP_TO_USEC(CURRENT_TIMESTAMP()) AS FLOAT) AS ts_as_float)

并且对于标准sql(最初在问题标题中错过了这个):

#standardSQL
WITH test AS (
  SELECT CURRENT_TIMESTAMP() AS ts_original, 
  CAST(UNIX_MICROS(CURRENT_TIMESTAMP()) AS FLOAT64) AS ts_as_float
)
SELECT 
  ts_original, 
  ts_as_float, 
  TIMESTAMP_MICROS(CAST(ts_as_float AS INT64)) AS ts,
  DATE(TIMESTAMP_MICROS(CAST(ts_as_float AS INT64))) AS dt
FROM test