sql检索存在时间段内的记录

本文介绍如何使用SQL从base表中检索指定时间段内的记录,包括按日进行检索的实现方法,帮助理解SQL时间查询操作。
摘要由CSDN通过智能技术生成

一、需求

一条sql检索存在时间段内的记录

表:base

idstart_timeend_time
12021-01-01 12:01:12
22021-01-01 14:01:122021-01-01 14:06:12
32021-01-01 15:01:122021-02-01 05:06:12
42021-02-01 15:01:122021-02-01 15:06:12
52021-02-01 16:01:122021-02-01 17:06:12
62021-02-01 19:01:12

效果(1)

检索时间段为2021-02-01日的数据

idstart_timeend_time
12021-01-01 12:01:12
32021-01-01 15:01:122021-02-01 05:06:12
42021-02-01 15:01:122021-02-01 15:06:12
52021-02-01 16:01:122021-02-01 17:06:12
62021-02-01 19:01:12

实现SQL

SELECT * FROM base where start_time<'2021-02-02' and (end_time>'2021-02-01' or end_time is null)
/**
*sql语句纯手写重在参考实现逻辑
**/

效果(2)

检索时间段为2021-02-01日的数据(将时间段外的数据排除)

idstart_timeend_time
12021-02-01 00:00:002021-02-02 00:00:00
32021-02-01 00:00:002021-02-01 05:06:12
42021-02-01 15:01:122021-02-01 15:06:12
52021-02-01 16:01:122021-02-01 17:06:12
62021-02-01 19:01:122021-02-02 00:00:00

实现SQL

SELECT id,
case when start_time<'2021-02-01' then '2021-02-01' else start_time end start_time,
case when end_time is null or end_time>'2021-02-02' then least('2021-02-02',now()) else  end_time end end_time 
FROM base where start_time<'2021-02-02' and (end_time>'2021-02-01' or end_time is null)
/**
*sql语句纯手写重在参考实现逻辑
**/

◆ ◆ ◆ 结语 ◆ ◆ ◆
有不足之处,或表述不清楚的地方,请多多包含,共勉~~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值