Kiểu ngày/giờ trong BigQuery

Giới thiệu về BigQuery

Matt Forrest

Field CTO

Vì sao ngày và giờ quan trọng

  1. Lọc nhanh tập dữ liệu dài
  2. Trích xuất phần của ngày/giờ
  3. Chiến lược phân vùng
Giới thiệu về BigQuery

Date

Ví dụ kiểu dữ liệu DATE

SELECT 
    DATE(2010, 05, 19) as launch


/*------------* | launch | +------------+ | 2010-05-19 | *------------*/
Giới thiệu về BigQuery

Timestamp

Ví dụ timestamp:

SELECT 
    TIMESTAMP("2010-05-19 00:00:00+00") as launch


/*-------------------------* | launch | +-------------------------+ | 2010-05-19 00:00:00 UTC | *-------------------------*/
Giới thiệu về BigQuery

Datetime và Time

Ví dụ về time và datetime:

SELECT
  TIME(12, 00, 00) as noon,

DATETIME(2019, 05, 19, 00, 00, 00) as launch
/*----------+----------------------* | noon | launch | +----------+----------------------+ | 12:00:00 | 2019-05-19T00:00:00 | *----------+----------------------*/
Giới thiệu về BigQuery

Thành phần ngày và timestamp

Ngày

  • DAY, DAYOFWEEK, DAYOFYEAR.

Tuần

  • WEEK, WEEKDAY, ISOWEEK.

Tháng/Năm

  • MONTH, QUARTER, YEAR, ISOYEAR.

Thời gian

  • HOUR, MINUTE, SECOND, MILLISECOND, MICROSECOND.
1 https://cloud.google.com/bigquery/docs/reference/standard-sql/timestamp_functions#timestamp_trunc
Giới thiệu về BigQuery

ADD, SUBTRACT và DIFF

Cộng thêm 5 ngày

SELECT 
    DATE_ADD(DATE '2010-05-19', 
             INTERVAL 5 DAY) 
             AS five_days_later;

/*--------------------* | five_days_later | +--------------------+ | 2010-05-24 | *--------------------*/

Tìm chênh lệch

SELECT 
    DATE_DIFF(DATE '2010-05-24', 
             DATE '2010-05-19', DAY) 
             AS difference;


/*-------------* | difference | +-------------+ | 5 | *-------------*/
Giới thiệu về BigQuery

EXTRACT

Lấy thứ trong tuần

SELECT 
    EXTRACT(DAYOFWEEK FROM DATE '2010-05-19') 
             AS day_of_week;


/*--------------* | day_of_week | +--------------+ | 4 | *--------------*/
Giới thiệu về BigQuery

FORMAT

SELECT
    FORMAT_DATE(
      '%x', DATE '2010-05-19') 
    AS with_slashes;


/*--------------* | with_slashes | +--------------+ | 05/19/10 | *--------------*/
SELECT
    FORMAT_DATE(
      '%A', DATE '2010-05-19') 
    AS dow;

/*--------------* | dow | +--------------+ | Wednesday | *--------------*/
1 https://cloud.google.com/bigquery/docs/reference/standard-sql/format-elements#format_elements_date_time
Giới thiệu về BigQuery

Ngày/timestamp hiện tại

Lấy timestamp hiện tại:

SELECT
  CURRENT_TIMESTAMP(); 

/*---------------------------------*
 | current_timestamp               |
 +---------------------------------+
 | 2023-11-13 17:35:25.951432 UTC  |
 *---------------------------------*/

Lấy ngày hiện tại:

SELECT
  CURRENT_DATE();

/*---------------*
 | current_date  |
 +---------------+
 | 2023-11-13    |
 *---------------*/
Giới thiệu về BigQuery

Tóm tắt nhanh

Kiểu dữ liệu

  • Date là ngày cụ thể; timestamp là ngày giờ tuyệt đối

Thành phần ngày/timestamp

  • Các phần của date/timestamp (ví dụ: MONTH, HOUR)

Cộng và trừ

  • Hàm cộng/trừ theo đơn vị thời gian (ví dụ: DATE_ADD)

Chênh lệch

  • Chênh lệch giữa hai ngày theo đơn vị (ví dụ: TIMESTAMP_SUB)

Trích xuất và định dạng

  • Trích xuất phần của ngày bằng date part; định dạng ngày (ví dụ: EXTRACT, FORMAT)

Ngày/timestamp hiện tại

  • Trả về ngày hoặc timestamp hiện tại (ví dụ: CURRENT_TIMESTAMP)
Giới thiệu về BigQuery

Ayo berlatih!

Giới thiệu về BigQuery

Preparing Video For Download...