BigQuery 时间戳至日期时间

Pra*_*les 9 google-bigquery

Google 中的转换规则TIMESTAMPS可以变成DATETIME

以下代码可将 a 转换TIMESTAMP为 a DATE

SELECT CAST( DATE(CURRENT_TIMESTAMP()) AS DATE)
Run Code Online (Sandbox Code Playgroud)

我们可以DATETIME在标准 SQL 中使用它,但我们在这个过程中浪费了时间:

SELECT  CAST ( CAST( DATE(CURRENT_TIMESTAMP()) AS DATE) AS DATETIME )
Run Code Online (Sandbox Code Playgroud)

我们怎样才能在不浪费时间的情况下TIMESTAMP成为a(即类似这样的事情)?DATETIME

SELECT CAST(   CURRENT_TIMESTAMP() AS DATETIME )
Run Code Online (Sandbox Code Playgroud)

我们如何在 BigQuery 上的旧版 SQL 和标准 SQL 中执行此操作?

注意:我们刚刚发现我们的示例 CAST 适用于标准 SQL(看来我们的查询系统正在使用旧版 SQL)。

Mik*_*ant 7

您可以简单地使用 CAST(... as DATETIME) ,如下例所示

#standardSQL
WITH `project.dataset.table` AS (
  SELECT CURRENT_TIMESTAMP() ts_as_timestamp
)
SELECT ts_as_timestamp, CAST(ts_as_timestamp AS DATETIME) ts_as_datetime
FROM `project.dataset.table`  
Run Code Online (Sandbox Code Playgroud)

有结果

Row ts_as_timestamp                 ts_as_datetime   
1   2019-06-13 19:22:42.839108 UTC  2019-06-13T19:22:42.839108   
Run Code Online (Sandbox Code Playgroud)

对于旧版 SQL

#legacySQL
SELECT ts_as_timestamp, CAST(STRING(ts_as_timestamp) AS DATETIME) ts_as_datetime
FROM (SELECT CURRENT_TIMESTAMP() ts_as_timestamp)  
Run Code Online (Sandbox Code Playgroud)

具有相同的输出