关于oracle 同一行数据 两个时间段数据语句问题

问题描述

关于oracle 同一行数据 两个时间段数据语句问题

各位好,目前对一个旧系统改造,从sql 改造为 orcle时,遇到了一个问题,原先的sql语句select Count(*) from yd where (BeginDate + BeginTime<=(('2015-01-28')+('10:00:00'))) and (EndDate + EndTime>(('2015-01-28')+('10:00:00'))) and (zyID='32') 时是可以查出来语句的,但是改为oracle时,语句如下
select Count(*) from yd where to_date(BeginDate || ' '|| BeginTime,'YYYY-MM-DD HH24:MI:SS') >=to_date('2015-01-28' || ' ' || '10:00:00','YYYY-MM-DD HH24:MI:SS') and to_date(EndDate || ' '|| EndTime,'YYYY-MM-DD HH24:MI:SS')< to_date('2015-01-28' || ' ' || '10:00:00','YYYY-MM-DD HH24:MI:SS') and (zyID='32')
却选不出来数据,请问是什么原因呢,!
表结构如下(http://img.ask.csdn.net/upload/201502/27/1425045166_710236.png)

解决方案

参考How to concatenate time to a date
你的BEGINDATE, ENDDATE, BEGINTIME, ENDTIME都是什么类型的?如果不是字符型的,试一下先用to_char把日期和时间字段转换成字符,然后使用||来链接字符
另外你的zyID是字符类型还是整型的,如果是整型的,应该不需要引号。

解决方案二:

前后两句的SQL不是等价的。
第一句中,是开始时间<=,结束时间>
后面一句是开始时间>= 结束时间<

按照截图两个语句是查不出来的。估计你第一个语句查到的记录不是这一条。
第二条语句的记录只有开始和结束时间都是2015-01-28 10:00:00 才满足要求。

解决方案三:

大于号小于号,弄反了

时间: 2024-08-01 10:44:21

关于oracle 同一行数据 两个时间段数据语句问题的相关文章

查询 java-mongoDB做查询,给两个时间,查询这两个时间段之间的数据(数据库中有时间这个字段)

问题描述 mongoDB做查询,给两个时间,查询这两个时间段之间的数据(数据库中有时间这个字段) 怎么用java操作mongoDB查询 ,查询条件是大于某个时间小于某个时间 要是用 $gt 和 $lte 来卡范围, 他们只支持int型,不支持Long型 解决方案 大神召唤术!!!!!!!!!!!!!!!!!!!!!!!!!!!!come on 解决方案二: 有了解的朋友吗??!!!!!!!!!!!!!!!!!!! 解决方案三: mongodb也可以在查询的结果集后面用Where(e => e.d

sql-求解决oracle两个表数据匹配的问题

问题描述 求解决oracle两个表数据匹配的问题 是这样,有两个表 A 和B 要求得出只要A_id的开头和B表中的A_num的数据匹配,就将B的value添加进去 结果应该是这样: 其中A标的数据量有十万多,B表的有四千多. 这个需求应该怎样高效的实现? 想了很久都没得思路,求大神帮助啊! 解决方案 select a.*,b.value from a,b where instr(a.a_id,a_num)=1 解决方案二: 排版乱了,应该这样 结果 解决方案三: select a.*, b.va

oracle查询效率问题,分时间段查询数据效率低

问题描述 oracle查询效率问题,分时间段查询数据效率低 小弟菜鸟一枚,今遇到一问题请教高手,问题如下: 用户有一需求,要求查询某个时间段内(如2014-05-01 -- 2014-05-31),每十二小时的生产数据,8:00--20:00, 20:00--8:00, 所以小弟先建了个临时表,将每个时间段都分出来,时间段如下: 2014-5-1 7:01:00 --2014-5-1 8:00:00 2014-5-1 8:00:00 --2014-5-1 20:00:00 ....... 然后再

两台SqlServer数据同步解决方案

server|sqlserver|解决|数据|数据同步 前些天遇到特殊需求,两台SqlServer服务器天隔一方,需要实效性很高的数据同步.     大家知道通过internet网,要高准确性和高实效性的实现两台数据库数据同步是个棘手的问题.     网络上找了些资料,有一篇文章可供参考http://www.sxsoft.com/technology_test/show_news.asp?id=450,文章中介绍了Sqlserver的出版和订阅方法来同步数据.根据文章做了下试验,是可以的,有以下

ORACLE中常用的SQL语法和数据对象

一.数据控制语句 (DML) 部分 1.INSERT (往数据表里插入记录的语句) INSERT INTO 表名(字段名1, 字段名2, --) VALUES ( 值1, 值2, --); INSERT INTO 表名(字段名1, 字段名2, --) SELECT 字段名1, 字段名2, -- FROM 另外的表名; 字符串类型的字段值必须用单引号括起来, 例如: 'GOOD DAY' 如果字段值里包含单引号' 需要进行字符串转换, 我们把它替换成两个单引号''. 字符串类型的字段值超过定义的长

Oracle的数据库、表空间及数据文件简介

数据文件是数据库的物理存储单位,而表空间TableSpace则是数据库的逻辑组成部分.数据库的数据是存储在表空间中的,而一个表空间可以由一个或多个数据文件组成,一个数据文件只能属于一个表空间.一旦数据文件被加入到某个表空间后,就不能删除这个文件,如果要删除某个数据文件,只能删除其所属于的表空间才行. 数据库,表空间,数据文件是紧密关联的,但它们有着重要的区别: 数据库和表空间 一个Oracle数据库由一个或多个叫做表空间的逻辑存储单元组成,表空间存储了所有数据库的数据. 表空间和数据文件 在Or

对网上盛传的两千万泄漏数据的简单分析

最近网上盛传两千万酒店用户数据泄漏,出于好奇,我也从网上下载了一份下来.本次下载纯粹是出于学习和研究用,不会做什么坏事,不要问本人要下载地址,大家自己找.由于本人并不是学统计和数据挖掘方面的,所以只能浅显的做做统计分析,下面开始我们的学习和研究. 首先,数据源只有一个表(总数据2005W),里面主要存放了用户的姓名.证件类型,证件号码,生日,性别,住址,手机号码,邮箱等私人信息.这些数据应该是从多个数据源集成进来的,因为里面的格式很不工整,有些默认值使用的也不一样.我们要做数据分析,那么需要进行

Oracle exp/imp命令快速导入导出数据

用exp命令导出表结构,不导出表数据.只需在命令行里加一个参数rows=n即可.表示不导出表数据. exp username/pwd@sid file=d:databak.dmp owner=(user)rows=n ******************************************************************************************************************** oracle exp/imp命令详解 E:>ex

C# 中两个datagridview数据传递的问题

问题描述 请教,我想在两个datagridview中互相能转移数据比如有datagridview1,他的数据源来自datatable.另一个datagridview2无数据源.当我双击datagridview1中的一行数据时,把数据转移到datagridview2中,并且datagridview中的那一行数据就没有了.请问该怎么写? 解决方案 解决方案二:帮顶`我只会用listview实现解决方案三:datagridview,winform的?解决方案四:是的解决方案五:privatevoidd