sql - ORACLE SQL - 如何检查时间是否在特定范围内?

标签 sql oracle

有一列“DateTime”,以“YYYY/MM/DD HH24:MI:SS”格式显示日期和时间。 我需要仅显示时间在特定范围内(凌晨 2 点 - 上午 6 点)的行,无论特定日期如何。 我有一个代码,仅显示特定日期的时间范围(凌晨 2 点 - 上午 6 点)。我需要显示过去 7 天内时间范围 2AM-6AM 的行。

SELECT *
    FROM <table_name >
   WHERE DateTime BETWEEN TO_DATE (
                                    TO_CHAR (TRUNC (SYSDATE), 'DD-MM-YYYY')
                                 || ' '
                                 || '02:00:00',
                                 'DD-MM-YYYY HH24:MI:SS')
                          AND TO_DATE (
                                    TO_CHAR (TRUNC (SYSDATE), 'DD-MM-YYYY')
                                 || ' '
                                 || '06:00:00',
                                 'DD-MM-YYYY HH24:MI:SS')
ORDER BY 1 DESC

最佳答案

SELECT *
FROM   your_table
WHERE  TO_CHAR( DateTime, 'HH24MMSS' ) BETWEEN '020000' AND '060000'
AND    DateTime >= TRUNC( SYSDATE ) - INTERVAL '7' DAY
AND    DateTime <  TRUNC( SYSDATE ) + INTERVAL '1' DAY

SELECT *
FROM   your_table
WHERE  DateTime BETWEEN TRUNC( DateTime ) + INTERVAL '2' HOUR
                    AND TRUNC( DateTime ) + INTERVAL '6' HOUR
AND    DateTime >= TRUNC( SYSDATE ) - INTERVAL '7' DAY
AND    DateTime <  TRUNC( SYSDATE ) + INTERVAL '1' DAY

关于sql - ORACLE SQL - 如何检查时间是否在特定范围内?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43657907/

相关文章:

oracle - 表空间文件被误删除时如何启动Oracle 12c数据库

sql - 从字符串转换日期和/或时间时转换失败

mysql - ORDER BY 两个条件

php - MySQL 查询 - 替代方案

mysql - 我想知道这个 MySQL 查询是否正确? (MySQL 加入乐趣!)

.net - 找不到 Oracle OpenSSO Fedlet .NET 主文件夹

mysql - Select INTO 语句涉及哪些锁?

mysql - 将多行连接到一个单元格中的 SQL 命令?

sql - 在 SQL 导航器查询中定义函数

sql - 如果加入返回 NULL 则执行以下操作