`
tianhandigeng
  • 浏览: 374392 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

Oracle 时间段查询

阅读更多

    需求:根据用户输入的时间段查询出记录。

Oracle数据库中一个一个存放时间的字段,字段类型是DATE型的,其中有这样的两条数据



 这个字段存有时分秒,用户输入的时候是按日期来查询的,也就是说只有年月日,最初我是这样查询的:

select * from tb_product where createdate>=to_date('2011-6-13','yyyy-MM-dd') and createdate<=to_date('2011-6-16','yyyy-MM-dd');

 这样查询的话2011/6/16这条记录是查不出来的,因为字段存了时分秒。

最后通过群里的朋友的指点改成了这样:

select * from tb_product where to_char(createdate,'yyyy-MM-dd')>='2011-6-13' and to_char(createdate,'yyyy-MM-dd')<='2011-6-16';

 这样也查不出来,不是语句错了,而是我日期格式错了,日期格式是‘yyyy-MM-dd’这样的,而我写的是2011-6-13,改成

2011-06-13和2011-06-16就可以了。

   上面的方法就是只按照日期查询的方法了,各位有更好的方法,请留言。

 

 

  • 大小: 4.2 KB
分享到:
评论
14 楼 yongqi 2011-06-18  
我不明白
select * from tb_product where createdate>=to_date('2011-6-13','yyyy-MM-dd') and createdate<=to_date('2011-6-17','yyyy-MM-dd'); 


这样的写法2011/6/16这条记录为什么查不出来,我一直是这样用的,没发现这个问题?谁讲一下?
13 楼 wxwdt 2011-06-18  
不过这种方式需要进行类型转换Date->String ,我们系统前端是swing的
12 楼 hs598375774 2011-06-18  
wad12302 写道
select * from tb_product where

createdate > to_date('2011-6-15','yyyy-MM-dd') - 1

and

createdate<=to_date('2011-6-16','yyyy-MM-dd') + 1;



用上面方式不错。。
11 楼 nirvana1988 2011-06-18  
fengyexjtu 写道
wad12302 写道
select * from tb_product where

createdate > to_date('2011-6-15','yyyy-MM-dd') - 1

and

createdate<=to_date('2011-6-16','yyyy-MM-dd') + 1;


个人认为这种方式好一些

+1
10 楼 anhaoy 2011-06-18  
wxwdt 写道
select * from tb_product where trunc(createdate)>=? and trunc(createdate)<=?
用trunc函数就可以了


这种做法比较傻。会被骂。尽量不要把函数用到字段上。
9 楼 fengyexjtu 2011-06-18  
wad12302 写道
select * from tb_product where

createdate > to_date('2011-6-15','yyyy-MM-dd') - 1

and

createdate<=to_date('2011-6-16','yyyy-MM-dd') + 1;


个人认为这种方式好一些
8 楼 wad12302 2011-06-18  
createdate < to_date('2011-6-16','yyyy-MM-dd') + 1;
7 楼 wad12302 2011-06-18  
select * from tb_product where

createdate > to_date('2011-6-15','yyyy-MM-dd') - 1

and

createdate<=to_date('2011-6-16','yyyy-MM-dd') + 1;


上面写有问题:

好像是应该是

>=  aaa

and

<  bbb - 1
6 楼 風一樣的男子 2011-06-17  
createdate是索引字段的话,第二个SQL丢失索引
也不知识谁指导LZ的
5 楼 魔力猫咪 2011-06-17  
不要把函数用在表字段上,这种方式无法利用索引,必然产生全表扫描。除非建立函数索引。
建议在进入SQL查询前,先对参数进行一些处理。在to_date前,在参数后面加上分钟比较合适。
4 楼 wxwdt 2011-06-17  
select * from tb_product where trunc(createdate)>=? and trunc(createdate)<=?
用trunc函数就可以了
3 楼 z276356445t 2011-06-17  
to_char那岂不是把查询的时间字段转换为字符来进行比较大小,那还有何意义呢?那还不干脆在设计库的时候就把时间字段设置为字符型的,只是觉得违反约束了.
2 楼 tianhandigeng 2011-06-17  
chansman 写道
你还是应该使用第一种方法,因为第二种方法吧数据库中所有的数据都做了 to_char.
to_date 是 yyyy-mm-dd 不是MM 同时你还应该注意临界时间

把数据库中所有的数据都做了 to_char. 这怎么里面,是数据库中所有的记录都这样处理了?
1 楼 chansman 2011-06-17  
你还是应该使用第一种方法,因为第二种方法吧数据库中所有的数据都做了 to_char.
to_date 是 yyyy-mm-dd 不是MM 同时你还应该注意临界时间

相关推荐

    sql查询oracle时间段操作

    除了上述方法,Oracle的行版本控制(RAC)也支持时间段查询。启用RAC后,每个数据行都有一个时间戳,使得查询在特定时间点的行版本成为可能。 在实际应用中,结合使用这些工具和特性,可以高效地管理和恢复Oracle...

    Oracle–查询时间段内执行的sql、Produce

    1.查询时间段内执行的sql、Produce select * from v$sqlarea a where 1=1 and a.LAST_ACTIVE_TIME &gt;= to_date( '2013-02-21 18:23:00','yyyy-MM-dd HH24:mi:ss') and a.LAST_ACTIVE_TIME &lt; to_date( '2013-...

    Oracle时间区间段合并.pdf

    在Oracle数据库中,时间区间段的合并是...总结来说,Oracle时间区间段合并的算法利用了窗口函数和分组来识别和合并连续的时间段,能够有效地处理和分析时间序列数据,对于优化数据处理流程和提高查询效率具有重要意义。

    oracle 根据时间段做报表统计

    oracle 根据时间段做报表统计 SQL是时间段统计 SQL原句

    oracle按指定时间查询数据如果未查询到继续递减时间段查询(存储过程)

    本文将详细解析一个特定的Oracle存储过程,该过程旨在按指定时间查询数据,如果未查询到,则继续递减时间段进行查询,直至找到数据或达到预设的时间下限。 ### 核心知识点:Oracle存储过程与时间窗口查询 #### 1. ...

    oracle抓取指定时间段AWR报告实例说明 .docx

    ### Oracle抓取指定时间段AWR报告实例说明 #### 背景介绍 在日常的数据库运维工作中,我们经常需要对Oracle数据库的性能进行监控与优化。自动工作负载资料库(Automatic Workload Repository,简称AWR)是Oracle 10...

    Oracle 导出某时间段AWR与ASH性能报告操作日志

    ### Oracle 导出某时间段AWR与ASH性能报告操作日志 #### 一、Oracle AWR与ASH简介 ##### 1.1 AWR (Automatic Workload Repository) 在Oracle数据库环境中,AWR是一种自动化的工具,它收集并存储有关数据库工作...

    oracle 闪回查询

    此外,UNDO_RETENTION 参数也需要设置为合适的值,以确定可以闪回查询的时间段。 Flashback Query 的使用方式有两种:一种是使用 SQL 语句的 AS OF 子句,另一种是使用 DBMS_FLASHBACK 包。通过 AS OF 子句,用户...

    ORACLE中SQL查询优化技术

    2. **使用分区**:将`ORDERS`表按`ORDER_DATE`字段进行范围分区,以便快速定位到特定时间段的数据。 3. **调整初始化参数**:增加`db_buffer_cache`大小,以便更多的数据能够被缓存在内存中,减少磁盘I/O操作。 ###...

    oracle回滚段使用率过高之解决方法

    情况四:可以优化事务的执行计划,减少事务的执行时间,降低回滚段的使用率。 五、总结 Oracle 回滚段是一个重要的数据库机制,它用于存放数据修改之前的值,以便在事务回滚或恢复时使用。然而,回滚段使用率过高...

    oracle 回滚段探究

    1. **一致性读**:在多用户并发环境中,为了防止用户在执行查询时看到其他未提交的事务数据,Oracle利用回滚段来提供一致性读视图。当一个事务开始时,其操作的数据变化前的状态会被保存到回滚段中,这样即使有其他...

    oracle 常用SQL查询

    在Oracle数据库管理中,SQL查询是日常操作的核心部分,它用于获取、分析和操作数据库中的数据。以下是一些常用的Oracle SQL查询,这些查询涵盖了从基础的表空间信息到复杂的数据库对象状态和性能监控。 1. **查看表...

    深入解析oracle的回滚段

    对于长时间运行的查询,Oracle会构建一个基于当前系统改变号(SCN)的读一致性视图,避免看到中间状态的数据。 回滚段分为几种类型: 1. **系统回滚段**:默认创建,专门用于存储系统表空间的对象的前影像。 2. *...

    oracle数据库回滚段专题解析

    这种方式有助于长时间运行的查询避免看到其他事务产生的未提交修改,从而保证了数据的一致性和准确性。 #### 设置读一致性级别 Oracle默认提供的是SQL语句级别的读一致性,可以通过以下两种方式来实现事务级别的读...

    oracle查看执行最慢与查询次数最多的sql语句

    本文将详细介绍如何查看Oracle数据库中执行最慢和查询次数最多的SQL语句,以帮助DBA(数据库管理员)识别潜在的性能瓶颈。 首先,我们来看如何查询执行最慢的SQL语句。在Oracle中,可以使用`v$sqlarea`视图来获取...

    Oracle用户数据字典以及查询表字段

    ### Oracle用户数据字典以及查询表字段 在Oracle数据库中,数据字典是存储数据库元数据(即关于数据的数据)的特殊集合。这些元数据包括了数据库对象的名称、类型、属性等信息。数据字典对于数据库管理员和开发人员...

    Oracle常用SQL查询语句

    根据提供的信息,我们可以总结出以下Oracle数据库中常用的SQL查询语句及它们的功能: ### 1. 查询表空间及其总大小 ```sql SELECT t.tablespace_name, ROUND(SUM(bytes / (1024 * 1024)), 0) AS ts_size FROM dba...

    sql时间段查询

    ### SQL 时间段查询详解 #### 一、概述 在处理具有日期时间字段的数据时,我们经常需要筛选出特定时间段内的数据。例如,在本案例中,需要获取某表中7月1日至7月31日之间晚上10点到早上6点的数据。这种查询涉及到...

    oracle中查询两年之间某一个月的数据

    在Oracle数据库中,查询特定时间范围内的数据是一项常见的任务,特别是在需要分析某个特定月份或时间段的数据时。根据提供的标题、描述、标签以及部分内容,本文将详细介绍如何在Oracle中查询两年之间某一个月的数据...

    使用LabVIEW操作ACCESS、MySQL、SQL server数据库实现按照时间段查询数据

    在LabVIEW中操作数据库,尤其是实现按时间段查询数据,需要借助特定的工具包。本教程主要涉及使用官方数据库工具包“Database Connectivity Toolkit”,该工具包包含29个函数,能够实现数据库连接、增删改查及数据...

Global site tag (gtag.js) - Google Analytics