sql 找出 某日7:45后、次日7:45前的数据

需求:找出 某日7:45后、次日7:45前的数据 

分析:

  • 以某日的零点为A,时间数据为B
  • diff = (A + 7:45) - B = A - (B - 7:45)
  • ifs(diff=-1,前一天,diff=0,当日,diff=1,次日,...)

 关键函数:

  • datediff(day,某日,时间列),提取某日的自然日期(零时),与时间列相减,向下取整
  • dateadd(hour,增减数量,时间列),增减多少小时

-- from 提取了11-9 零点到11-14 零点之间的数据
-- datediff 提取了 11-11 11:11:11 的【自然日期 11-11 00:00:00】,然后与【finishtime - 7:45】求差,向下取整
-- 筛选结果为0的,即为 11-11早上7:45 到 11-12早上7:45之间的数据

-- 原理是,将finishtime 减去 7:45,然后筛选 与某日零点 相距24小时以内 的数据
-- 比如,11-11 7:45,记为 11-11 0:00; 11-11 7:44,记为 11-10 23:59;
-- 11-12 7:44,记为 11-11 23:59;筛选出每日7:45后、次日7:45前的数据。

select 
dateadd(
	hour,
	-7,
	finishtime
	) 'dateadd(hour)' ,

dateadd(
	minute,
	-45,
	dateadd(
		hour,
		-7,
		finishtime
		)
	) 'dateadd(minute)' ,

datediff(
	day,
	'2022-11-11 11:11:11',
	dateadd(
		minute,
		-45,
		dateadd(
			hour,
			-7,
			finishtime
			)
		)
	) 'datediff(day)' ,

finishtime,
machine
from view_AllFinishingOps_idx where finishtime >='2022-11-9' and finishtime <= '2022-11-14'
order by finishtime

-- from 提取了11-9 零点到11-14 零点之间的数据
-- datediff 提取了 11-11 11:11:11 的【自然日期 11-11 00:00:00】,然后与【finishtime - 7:45】求差,向下取整
-- 筛选结果为0的,即为 11-11早上7:45 到 11-12早上7:45之间的数据

-- 原理是,将finishtime 减去 7:45,然后筛选 与某日零点 相距24小时以内 的数据
-- 比如,11-11 7:45,记为 11-11 0:00; 11-11 7:44,记为 11-10 23:59;
-- 11-12 7:44,记为 11-11 23:59;筛选出每日7:45后、次日7:45前的数据。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值