如何写这样的sql语句?查询某一时间字段超过n小时后的记录

时间:2022-07-17 19:22:52
时间字段是time,格式为YYYY-MM-DD HH-MM-SS
n是查询的变量

select * from T_T where time >= ...

这里...应该是一个time+n的意思,即YYYY-MM-DD (HH+n)-MM-SS请问如何写sql的语句?

7 个解决方案

#1


select * from T_T where time >= your_time+n/24;

#2


9i以上版本支持:
select * from T_T where time >= sysdate + interval 'n' hour 

SQL> select sysdate + interval '2' hour from dual;

SYSDATE+INTERVAL'2'
-------------------
2005-07-18 15:28:23

#3


哦,忘记说明time的类型是String.

#4


把time转换成时间在按上面的办法就可以了
to_date(time,'yyyy-mm-dd hh:mi:ss')

#5


select * from T_T where to_date(OPER_TIME1,'yyyy-mm-dd hh:mi:ss') >= to_date(OPER_TIME2,'yyyy-mm-dd hh:mi:ss') + interval '1' hour order by OPER_TIME1 desc


这样的情况,如果OPER_TIME1的值是'2005-07-19 13:20:25',就会报错误:
ORA-01849:小时值必须介于1和12之间.如何解决?



还有一个问题:我执行  select sysdate + interval '2' hour from dual  结果是
2005-7-22 17:17:25
为什么少了一个'0'?

#6


ORA-01849:小时值必须介于1和12之间.如何解决?
这个如何解决啊?

#7


自己看了.
values(to_date('2001-09-08 16:22:30','YYYY-MM-DD HH24MiSS'))

#1


select * from T_T where time >= your_time+n/24;

#2


9i以上版本支持:
select * from T_T where time >= sysdate + interval 'n' hour 

SQL> select sysdate + interval '2' hour from dual;

SYSDATE+INTERVAL'2'
-------------------
2005-07-18 15:28:23

#3


哦,忘记说明time的类型是String.

#4


把time转换成时间在按上面的办法就可以了
to_date(time,'yyyy-mm-dd hh:mi:ss')

#5


select * from T_T where to_date(OPER_TIME1,'yyyy-mm-dd hh:mi:ss') >= to_date(OPER_TIME2,'yyyy-mm-dd hh:mi:ss') + interval '1' hour order by OPER_TIME1 desc


这样的情况,如果OPER_TIME1的值是'2005-07-19 13:20:25',就会报错误:
ORA-01849:小时值必须介于1和12之间.如何解决?



还有一个问题:我执行  select sysdate + interval '2' hour from dual  结果是
2005-7-22 17:17:25
为什么少了一个'0'?

#6


ORA-01849:小时值必须介于1和12之间.如何解决?
这个如何解决啊?

#7


自己看了.
values(to_date('2001-09-08 16:22:30','YYYY-MM-DD HH24MiSS'))