数据科学面试中应该知道的5个SQL日期函数
俊红的数据分析之路
共 2968字,需浏览 6分钟
· 2021-10-01
今天来深入探讨 SQL 中 5 个最重要和最有用的 DATE 函数以及一些可以使用它们的实际业务案例。 正文
来源: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 在你希望定期(例如每周、每月或每年)汇总数字时非常有用。 DATE_TRUNC 在进行分组分析时是必要的,你通常按月对用户进行分组。
withDTE_ADD() / DATE_SUB()as (
SELECT DATE_TRUNC(date, WEEK) as week_date,
daily_sales
FROM sales
)
SELECT week_date,
SUM(daily_sales) as weekly_sales
FROM sales_data
GROUP BY week_date
02
DATE_DIFF()
DATE_DIFF(date_expression_1, date_expression_2, date_part)
DATE_DIFF() 比较两个日期并返回两个日期之间日期部分的差异。
DATE_DIFF('2021-01-02', '2021-01-01', DAY) = 1
DATE_DIFF() 在你想要比较两个日期时很有用,例如,包裹何时发货和包裹何时交付,或者用户何时注册和何时取消。 DATE_DIFF() 在 WHERE 子句中也很有用,如果你想过滤 X 周期前发生的日期(例如 5 天前、2 周前、上个月)。
SELECT order_id
, DATE_DIFF(date_received, date_shipped, DAY) as shipping_time
FROM orders
SELECT order_id
, amount
FROM orders
WHERE 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 周期前或将来 X 周期发生的日期。
SELECT order_id
, amount
FROM orders
WHERE DATE_ADD(date_shipped, INTERVAL 10 DAY) > date_received
04
EXTRACT()
EXTRACT(part FROM date_expression)
EXTRACT(DAY FROM '2021-01-03') = 3
EXTRACT(MONTH FROM '2021-01-03') = 1
EXTRACT(YEAR FROM '2021-01-03') = 2021
使用 EXTRACT() 是获取日期的特定部份的一种简单方法。 例如需要按周数报告,可以使用 EXTRACT() 获取给定记录的给定日期的周数。 EXTRACT() 允许你从日期中获取月份数或年份,可用作机器学习模型的特征。
05
CURRENT_DATE()
CURRENT_DATE([time_zone])
SELECT order_id
, amount
FROM orders
WHERE DATE_DIFF(CURRENT_DATE(), date_shipped, DAY) < 7
SELECT order_id
, amount
FROM orders
WHERE EXTRACT(MONTH FROM date_shipped) = EXTRACT(MONTH FROM CURRENT_DATE())
评论
了解加密货币到加密货币的互换
1、什么是加密货币互换?加密货币到加密货币的互换是指以现行市场汇率将一种加密货币直接兑换为另一种加密货币。与需要法定货币存款和较长流程的传统交易所不同,加密货币到加密货币的互换可以无缝地促进交换。掉期在提高加密货币的流动性和效率方面发挥着重要作用。该功能使用户能够将他们的加密货币与钱包中的其他代币进
区块链头条
0
李彦宏:开源大模型不如闭源,后者会持续领先;周鸿祎:“开源不如闭源” 的言论是胡说八道
架构师大咖
架构师大咖,打造有价值的架构师交流平台。分享架构师干货、教程、课程、资讯。架构师大咖,每日推送。
公众号该公众号已被封禁0、李彦宏:开源大模型不如闭源,后者会持续领先当今
源码共读
0
【第129期】程序员的新宠:三款终端工具,让你告别Xshell!
概述 WindTerm:跨平台的SSH利器 首先介绍的是WindTerm,这是一款使用C语言开发的跨平台SSH客户端。它不仅完全免费,而且没有商业使用的限制。WindTerm支持SSH v2、Telnet、Raw Tcp等协议,而且性能出色,甚至超过了FinalShell和Electerm。功能
前端微服务
0
字节员工:35岁以后被裁员的,后来都走了哪条路?现在2-2,要不要利用最后一年拼命上个岸。
架构师大咖
架构师大咖,打造有价值的架构师交流平台。分享架构师干货、教程、课程、资讯。架构师大咖,每日推送。
公众号该公众号已被封禁在当今竞争激烈的职场环境中,年龄并不总是一个决定性
源码共读
0
【送书福利】《Java面试八股文:高频面试题与求职攻略一本通》
先来唠唠最近粉丝面试回来跟我聊天,基本上都提到一个点,在面试过程中八股文占比很高(八股文70%、项目20%、10%算法)除了一些搞算法突出的厂除外。其实现在很多厂八股都是逐渐深入的方式来问,所以大家在学习的过程中,针对一些重点的内容,最好深入去学习,不然还是比较难应对这种追问式的问题。最近刚好从一位
Java后端技术
0
上班的时候,有一群摸鱼搭子非常重要...
上班的时候,有一群摸鱼搭子非常重要!一到上班时间,他们就从四面八方涌进群里冒泡...从八卦聊到股市、从职场聊到乌X兰局势,偶尔还会复读、相亲、battle...然后,下午6点钟准时消失不见...所以你要不要加入我们一起摸鱼?我们有北京、上海、深圳、广州、杭州、武汉、成都、南京等8个城市的摸鱼群,还有
产品经理日记
0
周四002 瑞超:同样落寞的境遇——北雪平vs埃尔夫斯堡
上赛季最终排名联赛第9的北雪平本赛季伊始表现不佳,4轮战罢他们仅以1胜1平2负的战绩排在倒数第三,这支历史上曾夺得13次联赛冠军、6次杯赛冠军老牌劲旅,正如英格兰赛场上的一众百年俱乐部,在低谷中不断探索着出路。球队主教练安德烈亚斯·阿尔姆曾是AIK索尔纳及赫根队的主教练,他于今年年初刚刚拿起球队教鞭
产品与体验
0
雷军辟谣了!不是高考状元,卡里也没有冰冷的 40 亿
架构师大咖
架构师大咖,打造有价值的架构师交流平台。分享架构师干货、教程、课程、资讯。架构师大咖,每日推送。
公众号该公众号已被封禁最近很火的雷军简历,听说落魄时卡里只有冰冷的 40
源码共读
0