PGSQL查询某时间段内的数据、两个时间日期的分钟差、天数

一、根据当前时间获取到三天前截止到此分秒的数据(以当前时分秒进行过滤)

SELECT
	submit_date 
FROM
	crm_work_order 
WHERE
	submit_date BETWEEN ( SELECT now( ) - INTERVAL '3 day' ) 
	AND ( SELECT now( ) )
ORDER BY submit_date ASC

二、根据当前时间获取到三天前凌晨的数据(不以当前的时分秒进行过滤)

SELECT
	submit_date 
FROM
	crm_work_order
WHERE
 submit_date >= to_timestamp( SUBSTRING ( to_char( now( ), 'yyyy-MM-dd hh24:MI:ss' ) FROM 1 FOR 10 ), 'yyyy-MM-dd' ) - INTERVAL '3 day'
 ORDER BY submit_date ASC

三、获得两个日期的时间差

interval_value:相差的小时差
day_value:相差的天数
minutes:相差的分钟数

SELECT
	interval_value,
	date_part( 'day', interval_value ) AS day_value,
	date_part( 'day', interval_value ) * 24 * 60 + date_part( 'minute', interval_value ) AS minutes 
FROM
	( SELECT ( CURRENT_TIMESTAMP - to_timestamp( '2021-08-10 11:30', 'yyyy-mm-dd hh24:mi' ) ) AS interval_value ) s;

运行结果

业务上使用

查询出系统当前时间和数据库中服务完成时间差超过10分钟的

SELECT
	crm_work_order_relation.* 
FROM
	crm_work_order_relation
	LEFT JOIN crm_work_order ON crm_work_order_relation.crm_work_order = crm_work_order.ID 
WHERE
	crm_work_order_relation.employee = ? 1 
	AND crm_work_order_relation.is_remote IS FALSE 
	AND crm_work_order_relation.status = 5 
	AND crm_work_order.crm_serve_repair_id IS NOT NULL 
	AND crm_work_order_relation.complete_time > '2021-07-20' 
	AND (
		date_part( 'day', CURRENT_TIMESTAMP - to_timestamp( crm_work_order_relation.complete_time :: TEXT, 'yyyy-MM-dd hh24:MI:ss' ) ) * 24 * 60 + date_part( 'minute', CURRENT_TIMESTAMP - to_timestamp( crm_work_order_relation.complete_time :: TEXT, 'yyyy-MM-dd hh24:MI:ss' ) ) > 10 
	)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值