日期作"特定日期"含义时,要用到year,month等日期函数,不然其数据类型只是单纯的数字,不会有其背后的时间逻辑.
year函数以int数据类型的格式返回特定日期的年度信息。month函数以int数据类型的格式返回特定日期的月份信息。
year()表示指定的日期,month()表示指定的月份。
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月
select order_num,order_date from Orders
where year(order_date) = 2020 and month(order_date) = 1
order by order_date
在between中使用日期时,SQL会默认将date格式转换为datetime格式,具体操作就是为date格式后面添加" 00:00:00",若是order_date between "2020-01-01" and "2020-01-31",其实是between "2020-01-01 00:00:00" and "2020-01-31 00:00:00,2020-01-31这一天实际上是没有被囊括进去的。