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

gab*_*ida 2 google-bigquery

我想将float64转换为date/datetime?

我有一个内容与内容1.483653436E9我怎么能把它转换为日期?

谢谢

Mik*_*ant 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)
Run Code Online (Sandbox Code Playgroud)

对于标准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
Run Code Online (Sandbox Code Playgroud)

  • 谢谢,我使用了 DATE(TIMESTAMP_SECONDS(CAST(time AS INT64))) 并解决了我的问题。 (2认同)