如何在 BigQuery 中将 dd/mm/yyyy 字符串转换为日期?
How do I cast dd/mm/yyyy string into date in BigQuery?
我有 3 列
1. dd/mm/yyyy(存储为字符串)
2. app_id 和#downloads of apps
我必须找到一周内下载的应用程序的唯一 ID。
谢谢
您可以使用如下方式将 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 很有用,具体取决于您要执行的操作。
REGEXP_REPLACE更短:
SELECT ds,
TIMESTAMP(REGEXP_REPLACE(ds, r'(..)/(..)/(....)', r'--')) ts
FROM (SELECT '23/03/2015' ds)
编辑
非前导零日期的更新版本:
SELECT ds,
TIMESTAMP(REGEXP_REPLACE(ds, r'(.?.)/(..)/(....)', r'--')) ts
FROM (SELECT '1/01/2017' ds)
使用标准更短 SQL:
SELECT TIMESTAMP(PARSE_DATE('%d/%m/%Y','23/03/2015'))
我有 3 列 1. dd/mm/yyyy(存储为字符串) 2. app_id 和#downloads of apps
我必须找到一周内下载的应用程序的唯一 ID。
谢谢
您可以使用如下方式将 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 很有用,具体取决于您要执行的操作。
REGEXP_REPLACE更短:
SELECT ds,
TIMESTAMP(REGEXP_REPLACE(ds, r'(..)/(..)/(....)', r'--')) ts
FROM (SELECT '23/03/2015' ds)
编辑
非前导零日期的更新版本:
SELECT ds,
TIMESTAMP(REGEXP_REPLACE(ds, r'(.?.)/(..)/(....)', r'--')) ts
FROM (SELECT '1/01/2017' ds)
使用标准更短 SQL:
SELECT TIMESTAMP(PARSE_DATE('%d/%m/%Y','23/03/2015'))