ประเภทข้อมูลวันที่/เวลาใน BigQuery

BigQuery เบื้องต้น

Matt Forrest

Field CTO

ทำไมวันที่และเวลาจึงสำคัญ

  1. กรองชุดข้อมูลขนาดใหญ่ได้ง่าย
  2. ดึงส่วนประกอบของวันที่/เวลา
  3. กลยุทธ์การแบ่งพาร์ติชัน
BigQuery เบื้องต้น

วันที่ (Dates)

ตัวอย่างชนิดข้อมูล DATE

SELECT 
    DATE(2010, 05, 19) as launch


/*------------* | launch | +------------+ | 2010-05-19 | *------------*/
BigQuery เบื้องต้น

Timestamps

ตัวอย่าง timestamp:

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


/*-------------------------* | launch | +-------------------------+ | 2010-05-19 00:00:00 UTC | *-------------------------*/
BigQuery เบื้องต้น

Datetime และ Time

ตัวอย่าง time และ 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 | *----------+----------------------*/
BigQuery เบื้องต้น

ส่วนประกอบของวันที่และ timestamp

วัน

  • DAY, DAYOFWEEK, DAYOFYEAR.

สัปดาห์

  • WEEK, WEEKDAY, ISOWEEK.

เดือน/ปี

  • MONTH, QUARTER, YEAR, ISOYEAR.

เวลา

  • HOUR, MINUTE, SECOND, MILLISECOND, MICROSECOND.
1 https://cloud.google.com/bigquery/docs/reference/standard-sql/timestamp_functions#timestamp_trunc
BigQuery เบื้องต้น

ADD, SUBTRACT และ DIFF

บวกเพิ่มห้าวัน

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

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

หาผลต่าง

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


/*-------------* | difference | +-------------+ | 5 | *-------------*/
BigQuery เบื้องต้น

EXTRACT

หาวันในสัปดาห์

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


/*--------------* | day_of_week | +--------------+ | 4 | *--------------*/
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
BigQuery เบื้องต้น

วันที่/timestamp ปัจจุบัน

ดึง timestamp ปัจจุบัน:

SELECT
  CURRENT_TIMESTAMP(); 

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

ดึงวันที่ปัจจุบัน:

SELECT
  CURRENT_DATE();

/*---------------*
 | current_date  |
 +---------------+
 | 2023-11-13    |
 *---------------*/
BigQuery เบื้องต้น

สรุปอ้างอิงด่วน

ชนิดข้อมูล

  • Date คือวันที่เจาะจง, timestamp คือวันที่และเวลาแบบสัมบูรณ์

ส่วนประกอบของวันที่/timestamp

  • ส่วนประกอบของวันที่/timestamp (เช่น MONTH หรือ HOUR)

บวกและลบ

  • ฟังก์ชันสำหรับบวกหรือลบส่วนประกอบวันที่ (เช่น DATE_ADD)

ผลต่าง

  • ผลต่างระหว่างวันที่สองค่าตามส่วนประกอบวันที่ (เช่น TIMESTAMP_SUB)

ดึงและจัดรูปแบบ

  • ดึงส่วนประกอบของวันที่และจัดรูปแบบ (เช่น EXTRACT และ FORMAT)

วันที่/timestamp ปัจจุบัน

  • คืนค่าวันที่หรือ timestamp ปัจจุบัน (เช่น CURRENT_TIMESTAMP)
BigQuery เบื้องต้น

มาฝึกกันเถอะ!

BigQuery เบื้องต้น

Preparing Video For Download...