數(shù)據(jù)科學(xué)面試中應(yīng)該知道的5個(gè)SQL日期函數(shù)
今天來深入探討 SQL 中 5 個(gè)最重要和最有用的 DATE 函數(shù)以及一些可以使用它們的實(shí)際業(yè)務(wù)案例。 正文
來源:DeepHub IMBA
01
DATE_TRUNC()
DATE_TRUNC(date_expression, date_part)DATE_TRUNC() 將日期縮短為指定的日期部分。
DATE_TRUNC('2021-06-28', MONTH) = '2021-06-01'DATE_TRUNC('2021-06-28', YEAR) = '2021-01-01'
DATE_TRUNC 在你希望定期(例如每周、每月或每年)匯總數(shù)字時(shí)非常有用。 DATE_TRUNC 在進(jìn)行分組分析時(shí)是必要的,你通常按月對(duì)用戶進(jìn)行分組。

withDTE_ADD() / DATE_SUB()as (SELECT DATE_TRUNC(date, WEEK) as week_date,daily_salesFROM sales)SELECT week_date,SUM(daily_sales) as weekly_salesFROM sales_dataGROUP BY week_date
02
DATE_DIFF()
DATE_DIFF(date_expression_1, date_expression_2, date_part)DATE_DIFF() 比較兩個(gè)日期并返回兩個(gè)日期之間日期部分的差異。
DATE_DIFF('2021-01-02', '2021-01-01', DAY) = 1
DATE_DIFF() 在你想要比較兩個(gè)日期時(shí)很有用,例如,包裹何時(shí)發(fā)貨和包裹何時(shí)交付,或者用戶何時(shí)注冊(cè)和何時(shí)取消。 DATE_DIFF() 在 WHERE 子句中也很有用,如果你想過濾 X 周期前發(fā)生的日期(例如 5 天前、2 周前、上個(gè)月)。

SELECT order_id, DATE_DIFF(date_received, date_shipped, DAY) as shipping_timeFROM orders
SELECT order_id, amountFROM ordersWHERE DATE_DIFF(date_received, date_shipped, DAY) < 10
03
DTE_ADD() / DATE_SUM()
DATE_ADD(date_expression, INTERVAL int64 date_part)DATE_SUB(date_expression, INTERVAL int64 date_part)
DATE_ADD('2021-01-01', INTERVAL 3 DAY) = '2021-01-04'DATE_SUB('2021-01-04', INTERVAL 3 DAY) = '2021-01-01'DATE_ADD('2021-01-01', INTERVAL 1 MONTH) = '2021-02-01'
DATE_ADD() 和 DATE_SUB() 可以像 WHERE 子句中的 DATE_DIFF() 一樣使用,以過濾 X 周期前或?qū)?X 周期發(fā)生的日期。

SELECT order_id, amountFROM ordersWHERE DATE_ADD(date_shipped, INTERVAL 10 DAY) > date_received
04
EXTRACT()
EXTRACT(part FROM date_expression)
EXTRACT(DAY FROM '2021-01-03') = 3EXTRACT(MONTH FROM '2021-01-03') = 1EXTRACT(YEAR FROM '2021-01-03') = 2021
使用 EXTRACT() 是獲取日期的特定部份的一種簡(jiǎn)單方法。 例如需要按周數(shù)報(bào)告,可以使用 EXTRACT() 獲取給定記錄的給定日期的周數(shù)。 EXTRACT() 允許你從日期中獲取月份數(shù)或年份,可用作機(jī)器學(xué)習(xí)模型的特征。
05
CURRENT_DATE()
CURRENT_DATE([time_zone])

SELECT order_id, amountFROM ordersWHERE DATE_DIFF(CURRENT_DATE(), date_shipped, DAY) < 7
SELECT order_id, amountFROM ordersWHERE EXTRACT(MONTH FROM date_shipped) = EXTRACT(MONTH FROM CURRENT_DATE())





評(píng)論
圖片
表情
