Oracle中如何获取上一小时的整时段记录?
获取上一个完整小时的时间范围查询
要获取上一个完整自然小时的时间段(比如13:00-14:00之间任意时间执行,都返回12:00-13:00的范围),关键是先把当前时间截断到小时整点,再计算起始和结束时间,而不是直接减1小时。
PostgreSQL 实现
使用date_trunc函数截断时间到小时级别,再计算上一小时的范围:
SELECT date_trunc('hour', CURRENT_TIMESTAMP) - interval '1 hour' AS Starttime, date_trunc('hour', CURRENT_TIMESTAMP) AS Endtime;
逻辑说明
date_trunc('hour', CURRENT_TIMESTAMP):将当前时间(比如2023-08-17 14:36:39.912 +0530)截断到最近的小时整点,得到2023-08-17 14:00:00.000 +0530- 减去1小时后得到上一小时的起始时间,截断后的整点就是当前小时的起始,也就是上一小时的结束时间
执行后返回结果示例:
Starttime Endtime 2023-08-17 12:00:00.000 +0530 2023-08-17 13:00:00.000 +0530
MySQL 实现
如果使用MySQL,可以用DATE_FORMAT函数格式化到小时整点:
SELECT DATE_FORMAT(NOW(), '%Y-%m-%d %H:00:00') - INTERVAL 1 HOUR AS Starttime, DATE_FORMAT(NOW(), '%Y-%m-%d %H:00:00') AS Endtime;
内容的提问来源于stack exchange,提问作者Maverick
相关产品推荐
相关产品推荐

