oracle语句中,如何查询某个时间段的内容,where后应该怎么写,比如我查询3:00到3:30的

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle语句中,如何查询某个时间段的内容,where后应该怎么写,比如我查询3:00到3:30的相关的知识,希望对你有一定的参考价值。

数据中有2013-02-24/15:21:38这种的数据

亲,您好。oracle日期可以进行加减的
例如:select sysdate,sysdate-1/48 from dual;
sysdate-1/48 就是往前推半个小时
亲的问题可以参考这个写,希望对亲有帮助
参考技术A 如果数据库的列, 是 DATE 类型的话:

WHERE
TO_CHAR( 日期列, 'HH24MI' ) >= '0300'

AND TO_CHAR( 日期列, 'HH24MI' ) <= '0330'

如果是 varchar2 类型的, 就要确定一下, 格式是否都是 固定的格式了。
否则 SUBSTR 计算起来, 也是很麻烦的。追问

HH24MI' 这个是什么,固定的格式吗?应该是date类型的,我读的是 v$sql试图,我想看具体哪个时间段的操作

追答SQL> SELECT TO_CHAR( SYSDATE,  'HH24MI' ) FROM dual;

TO_C
----
1527


HH24 是获取时间中的小时部分, 是按24小时的方式来计算的

MI  是获取时间中的 分钟的部分。

追问

select *
from v$sql

WHERE TO_CHAR(first_load_time, 'HH24MI') >= '0300'

AND TO_CHAR(first_load_time, 'HH24MI') <= '0330'
这样写对吗?,我运行报错啊,报01722错误

追答

SQL> desc v$sql

 名称                                      是否为空? 类型

 ----------------------------------------- -------- ----------------------------

......

 FIRST_LOAD_TIME                                    VARCHAR2(19)

......


 FIRST_LOAD_TIME  数据类型是  VARCHAR2(19),     不是  DATE


你这个情况下, 需要用 SUBSTR 函数了

下面是例子

SQL> SELECT 
  2    FIRST_LOAD_TIME 
  3  FROM 
  4    v$sql
  5  WHERE
  6    SUBSTR(FIRST_LOAD_TIME, 12, 5) BETWEEN '02:00' AND '05:00'
  7    AND rownum < 5;

FIRST_LOAD_TIME
--------------------------------------
2013-05-27/02:15:26
2013-05-27/02:27:52
2013-05-27/02:34:56
2013-05-27/02:34:56

参考技术B SQL>alter session set nls_date_format='YYYY-MM-DD/HH24:MI:SS';
SQL>select to_char(sysdate,'YYYY-MM-DD/HH24:MI:SS') from dual;
SQL>select TO_DATE( '2013-05-31/01:23:45', 'YYYY-MM-DD/HH24:MI:SS') from dual;
SQL>select count(*) from table_name where create_time between to_date('2013-05-31/03:00:00','YYYY-MM-DD/HH24:MI:SS') and to_date ('2013-05-31/03:30:00','YYYY-MM-DD/HH24:MI:SS');本回答被提问者采纳
参考技术C 用between ‘3:00’ and ‘3:30’

oracle 查询某个字段有多条

参考技术A 查询一列等于多个值可用in或者or。 如test表中有如下内容: 要查询id为1,2,3的数据,可用如下语句: select * from test where id in (1,2,3);结果: 也可用or,语句如下: select * from test where id=1 or id=2 or id=3;结果如下:本回答被提问者采纳 参考技术B select a.col from a group by a.col having count(1)>1;

以上是关于oracle语句中,如何查询某个时间段的内容,where后应该怎么写,比如我查询3:00到3:30的的主要内容,如果未能解决你的问题,请参考以下文章

如何在oracle中查询某个表的占用了多大的空间!如果是sql语句请讲的详细子我是菜鸟!

oracle 查询某个字段有多条

oracle如何按时间格式查询

用oracle如何查询出一个表中的一个字段内容包含另一个表中的某个字段的值呢

oracle数据库字段内容如何批量替换?

SQL查询中,如何判断一个字符串字段的内容的长度