从Bigquery中的时间戳中提取日期:一种更好的方法

Dmi*_*lin 5 timestamp google-bigquery bigquery-standard-sql

Bigquery大师的一个快速问题.

以下是使用standardSQL从Bigquery中的时间戳中提取日期的两种方法

#standardSQL
#1
DATE(TIMESTAMP_MILLIS(CAST((timestamp) AS INT64)))
#2
EXTRACT(DATE FROM TIMESTAMP_MILLIS(timestamp))
Run Code Online (Sandbox Code Playgroud)

哪一个更可取,为什么?谢谢!

Ell*_*ard 7

这真的取决于个人喜好; 一个并不优于另一个,因为它们具有相同的语义和性能.支持使用的论点EXTRACT是,如果要在选择列表中提取其他日期/时间部分,则会反映它们.例如:

SELECT
  EXTRACT(DATE FROM TIMESTAMP_MILLIS(timestamp)) AS date,
  EXTRACT(ISOYEAR FROM TIMESTAMP_MILLIS(timestamp)) AS iso_year,
  EXTRACT(ISOWEEK FROM TIMESTAMP_MILLIS(timestamp)) AS iso_week
FROM YourTable;
Run Code Online (Sandbox Code Playgroud)

相比:

SELECT
  DATE(TIMESTAMP_MILLIS(timestamp)) AS date,
  EXTRACT(ISOYEAR FROM TIMESTAMP_MILLIS(timestamp)) AS iso_year,
  EXTRACT(ISOWEEK FROM TIMESTAMP_MILLIS(timestamp)) AS iso_week
FROM YourTable;
Run Code Online (Sandbox Code Playgroud)