- to_char实现
SELECT
*
FROM
TEST
WHERE
TO_CHAR (TIME,'yyyy-MM-dd HH24:mi:ss')
BETWEEN '2022-04-01 00:00:00'
AND '2022-04-25 14:16:07'
between and : 全闭区间
- to_date
SELECT
*
FROM
TEST
WHERE
TO_CHAR (TIME,'yyyy-MM-dd HH24:mi:ss')
BETWEEN '2022-06-01 00:00:00'
AND '2022-07-01 00:00:00'
可能遇到的错误:
- Oracle 异常 ORA-01861: literal does not match format string(字符串格式不匹配)
解决思路: 查看是否SQL语句中写的时间类型转换的格式不对!最关键的不要只看'yyyy-MM-dd HH24:mi:ss') '2022-06-01 00:00:00' '2022-07-01 00:00:00'
还应该去观察一下表中的TIME是不是也符合这个格式 - java.sql.SQLSyntaxErrorException: ORA-00933: SQL command not properly ended
解决思路: 当拼写包含较多符号的SQL时建议反复检查语句,容易语句出错
最后记录一下通过EXISTS关键字来高效查询是否存在某段时间内的数据。
SELECT 1
FROM TEST
WHERE EXISTS
(SELECT 1 FROM TABLE T TO_CHAR (TIME,'yyyy-MM-dd HH24:mi:ss')
BETWEEN '2022-04-01 00:00:00' AND '2022-04-25 14:16:07');
由于EXISTS在True之后会直接返回,相较于COUNT(1)所花费的时间更短。