关于date字段的查询语句的写法?急!!
有一个date类型的字段,operDate,保存数据记录的更新时间。
我想按照operDate的内容查询当前时间30分钟之内的数据,应该如何写sql语句??
1小时之内的数据查询语句要怎么写???
问题点数:50、回复次数:7Top
1 楼bzszp(SongZip)回复于 2005-08-02 14:38:34 得分 10
select * from tbname where operdate>sysdate-30*/(24*60);
select * from tbname where operdate>sysdate-1/24;Top
2 楼lveyo(lveyo)回复于 2005-08-02 14:43:41 得分 0
楼上能详细解释一下吗??Top
3 楼njhart2003()回复于 2005-08-02 14:51:12 得分 10
老大,是笔误吧,多了个“*”
select * from tbname where operdate>sysdate-30/(24*60);
select * from tbname where operdate>sysdate-1/24;
我来解释一下吧:
oracle的日期型变量是以“天”为单位来计算的。
Top
4 楼bzszp(SongZip)回复于 2005-08-02 14:51:12 得分 10
需要解释一下??
sysdate 取系统时间
SQL> select sysdate from dual;
SYSDATE
-------------------
2005-08-02 14:46:21
已用时间: 00: 00: 00.40
前一天:
SQL> select sysdate-1 from dual;
SYSDATE-1
-------------------
2005-08-01 14:46:46
已用时间: 00: 00: 00.30
SQL>
因此,30分钟前也就是sysdte-30/(24*60)
--sorry,上面回复中写错了,多谢了一个*.
一个小时前也就是sysdate-1/24;即(1/24天)
Top
5 楼njhart2003()回复于 2005-08-02 15:00:38 得分 10
奇怪,刚才我发的帖子不见了,
难道是被“冲”掉了?
CSDN的数据库是用的oracle还是其他?Top
6 楼whao()回复于 2005-08-02 15:08:45 得分 0
版主真快啊。来迟了一步。Top
7 楼duanzilin(寻)回复于 2005-08-02 15:54:47 得分 10
oracle 从8i开始就引入了时间间隔(interval)相关的函数;
下面的2种方法结果是一样的:
SQL> select sysdate + interval '2' hour from dual;
SYSDATE+INTERVAL'2'HOUR
-----------------------
2005-8-2 17:29:13
SQL> select sysdate + numtodsinterval(2,'hour') from dual;
SYSDATE+NUMTODSINTERVAL(2,'HOU
------------------------------
2005-8-2 17:30:38
这里NUMTODSINTERVAL ( n , 'char_expr' )
第一个参数是数字,第2个参数是从日期的英文拼写,从'day'到'second'.
年月间隔用NUMTOYMINTERVAL()
9i以后还引入了TO_DSINTERVAL ( char ['nlsparam'] )
参数是从日到秒的字符串:'1 2:20:30' 表示1天2小时20分30秒的时间间隔
TO_YMINTERVAL ( char ) 表示年月的间隔
另外还引入了interval day to second 和 year to month 的数据类型
interval_value_expr { DAY TO SECOND | YEAR TO MONTH }
SQL> select sysdate - to_dsinterval('1 1:05:20') from dual;
SYSDATE-TO_DSINTERVAL('11:05:2
------------------------------
2005-8-1 14:33:48
SQL> select sysdate - interval '1 1:05:20' day to second from dual;--相隔1天1小时5分20秒
SYSDATE-INTERVAL'11:05:20'DAYT
------------------------------
2005-8-1 14:34:18
SQL> select sysdate - to_yminterval('2-2') from dual;--相隔2年2个月
SYSDATE-TO_YMINTERVAL('2-2')
----------------------------
2003-6-2 15:41:39
Top




