如何在BigQuery中将dd / mm / yyyy字符串转换为日期?

时间:2015-03-12 17:53:53

标签: datetime casting google-bigquery string-to-datetime

我有3列 1. dd / mm / yyyy(存储为字符串) 2. app_id和#downloads的应用

我必须在一周内找到下载的应用程序的唯一ID。

谢谢

3 个答案:

答案 0 :(得分:18)

使用标准SQL更短:

SELECT TIMESTAMP(PARSE_DATE('%d/%m/%Y','23/03/2015'))

答案 1 :(得分:10)

您可以使用以下内容将dd / MM / yyyy字符串转换为BigQuery时间戳:

SELECT TIMESTAMP(year + '-' + month + '-' + day) as output_timestamp
FROM (
  SELECT 
    REGEXP_EXTRACT(input_date, '.*/([0-9]{4})$') as year, 
    REGEXP_EXTRACT(input_date, '^([0-9]{2}).*') as day, 
    REGEXP_EXTRACT(input_date, '.*/([0-9]{2})/.*') AS month 
  FROM 
    (SELECT '30/10/2015' as input_date),
    (SELECT '25/01/2015' as input_date)
)

将它们转换为时间戳后,您可能会发现date and time functions很有用,具体取决于您尝试做的事情。

答案 2 :(得分:5)

使用REGEXP_REPLACE缩短:

SELECT ds, 
   TIMESTAMP(REGEXP_REPLACE(ds, r'(..)/(..)/(....)', r'\3-\2-\1')) ts
FROM (SELECT '23/03/2015' ds)

修改

非领先零日期的更新版本:

SELECT ds, 
   TIMESTAMP(REGEXP_REPLACE(ds, r'(.?.)/(..)/(....)', r'\3-\2-\1')) ts
FROM (SELECT '1/01/2017' ds)