程序员求职经验分享与学习资料整理平台

网站首页 > 文章精选 正文

每日SQL自学知识点(第十天)—关于提取时间简单做法,一题多解

balukai 2024-12-25 10:16:09 文章精选 56 ℃

摘采自牛客网:https://blog.nowcoder.net/n/41cb34b72c5545cd8b39adb58314b7fd?f=comment


题目:描述

Orders订单表

order_num

order_date

a0001

2020-01-01 00:00:00

a0002

2020-01-02 00:00:00

a0003

2020-01-01 12:00:00

a0004

2020-02-01 00:00:00

a0005

2020-03-01 00:00:00

【问题】编写 SQL 语句,返回 2020 年 1 月的所有订单的订单号(order_num)和订单日期(order_date),并按订单日期升序排序

【示例结果】

返回订单号order_num,和order_date订单时间

order_num

order_date

a0001

2020-01-01 00:00:00

a0003

2020-01-01 12:00:00

a0002

2020-01-02 00:00:00

【示例解析】

a0001、a0002、a0003 时间属于2020年1月



一题多解法:

字符串匹配(近似查找法)

用like来查找

select order_num, order_date

from Orders

where order_date like '2020-01%'

order by order_date


切割字符串

select order_num, order_date

from Orders

where left(order_date, 7) = '2020-01'

order by order_date



字符串比较

select *

from Orders

where order_date >= '2020-01-01 00:00:00' and order_date <= '2020-01-31 23:59:59'

order by order_date;



用正则来查找(效率不如like,能用like就用like)

select order_num, order_date

from Orders

where order_date regexp '2020-01'

order by order_date



时间函数匹配

select order_num, order_date

from Orders

where year(order_date) = '2020' and month(order_date) = '1'

order by order_date



利用date_format函数 (参考其中的匹配规则进行匹配)

select order_num, order_date

from Orders

where date_format(order_date, '%Y-%m')='2020-01'

order by order_date

最近发表
标签列表