问题
I have 3 columns 1. dd/mm/yyyy (stored as a string) 2. app_id and #downloads of apps
I have to find unique ids of apps downloaded within a week.
Thank you
回答1:
You can convert your dd/MM/yyyy strings into BigQuery timestamps using something like the following:
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)
)
Once you have converted them to timestamps, you may find the date and time functions useful, depending on what you're trying to do.
回答2:
Even shorter using standard SQL:
SELECT TIMESTAMP(PARSE_DATE('%d/%m/%Y','23/03/2015'))
回答3:
Shorter with REGEXP_REPLACE:
SELECT ds,
TIMESTAMP(REGEXP_REPLACE(ds, r'(..)/(..)/(....)', r'\3-\2-\1')) ts
FROM (SELECT '23/03/2015' ds)
EDIT
Updated version for non-leading zero dates:
SELECT ds,
TIMESTAMP(REGEXP_REPLACE(ds, r'(.?.)/(..)/(....)', r'\3-\2-\1')) ts
FROM (SELECT '1/01/2017' ds)
来源:https://stackoverflow.com/questions/29016912/how-do-i-cast-dd-mm-yyyy-string-into-date-in-bigquery