Tôi có 3 cột 1. dd/mm/yyyy (được lưu trữ như là một chuỗi) 2. APP_ID và #downloads ứng dụngLàm cách nào để truyền chuỗi dd/mm/yyyy vào ngày trong BigQuery?
Tôi phải tìm id duy nhất của ứng dụng được tải về trong vòng một tuần.
Cảm ơn bạn
Tôi có 3 cột 1. dd/mm/yyyy (được lưu trữ như là một chuỗi) 2. APP_ID và #downloads ứng dụngLàm cách nào để truyền chuỗi dd/mm/yyyy vào ngày trong BigQuery?
Tôi phải tìm id duy nhất của ứng dụng được tải về trong vòng một tuần.
Cảm ơn bạn
Bạn có thể chuyển đổi chuỗi dd của bạn/MM/yyyy vào timestamps BigQuery sử dụng giống như sau:
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)
)
Một khi bạn đã chuyển đổi chúng để timestamps, bạn có thể tìm thấy những date and time functions hữu ích , tùy thuộc vào những gì bạn đang cố gắng làm.
ngắn với REGEXP_REPLACE:
SELECT ds,
TIMESTAMP(REGEXP_REPLACE(ds, r'(..)/(..)/(....)', r'\3-\2-\1')) ts
FROM (SELECT '23/03/2015' ds)
EDIT
phiên bản cập nhật cho phi hàng đầu zero ngày:
SELECT ds,
TIMESTAMP(REGEXP_REPLACE(ds, r'(.?.)/(..)/(....)', r'\3-\2-\1')) ts
FROM (SELECT '1/01/2017' ds)
cảm ơn rất nhiều, nó hoạt động tốt :) –
Bằng cách chuyển đổi thành TIMESTAMP trước, điều này có nguy cơ mất ngày trước năm 1970 không? Đó không phải là giới hạn của TIMESTAMP phải không? – Praxiteles
Dấu thời gian thực sự hỗ trợ từ năm 1 đến 9999, theo tài liệu của chúng tôi: https://cloud.google.com/bigquery/docs/reference/standard-sql/data-types#timestamp-type. Mặc dù các tài liệu này dành cho SQL chuẩn, nhưng dấu thời gian SQL cũ cũng hỗ trợ cùng một phạm vi. –