How do I cast dd/mm/yyyy string into date in BigQuery?

后端 未结 3 969
南旧
南旧 2020-12-30 11:32

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

相关标签:
3条回答
  • 2020-12-30 11:46

    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)
    
    0 讨论(0)
  • 2020-12-30 11:51

    Even shorter using standard SQL:

    SELECT TIMESTAMP(PARSE_DATE('%d/%m/%Y','23/03/2015'))
    
    0 讨论(0)
  • 2020-12-30 11:59

    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.

    0 讨论(0)
提交回复
热议问题