查询SQL不能在同一时间内,插入数据

问题描述

查询SQL不能在同一时间内,插入数据createtablet(idint,start_timevarchar(20),end_timevarchar(20));数据记录idstart_timeend_time12010-11-0311:00:00.0002010-11-0315:00:00.000if(SQL)--查到有数据{System.out.println("不能在同一时间插入数据");insertintot(id,start_time,end_time)values(1,'2010-11-0311:00:00.000','2010-11-0315:00:00.000');insertintot(id,start_time,end_time)values(1,'2010-11-0108:00:00.000','2010-11-0517:00:00.000');insertintot(id,start_time,end_time)values(1,'2010-11-0308:00:00.000','2010-11-0313:00:00.000');insertintot(id,start_time,end_time)values(1,'2010-11-0312:00:00.000','2010-11-0315:00:00.000');}if(SQL)--没数据{System.out.println("可以插入此数据");insertintot(id,start_time,end_time)values(1,'2010-11-0308:00:00.000','2010-11-0311:00:00.000');insertintot(id,start_time,end_time)values(1,'2010-11-0315:00:00.000','2010-11-0316:00:00.000');}

请教,以上的几条SQL语句该怎么写?

解决方案

解决方案二:
首先我想问下你id是主键吗?感觉可以重复的?然后正题,你首先根据时间条件去查找数据,也就是selectcount(*)fromtablewheretime='"+time+"'如果取到的结果大于0则表明有数据
解决方案三:
应该还需要注意一个问题,就是你之前的插入数据,中间是否需要考虑数据是否已经提交到DB?
解决方案四:
大概看了下你数据的规律,猜下吧,你说的应该不叫“同一时间内”,应该叫“在一个时间段内”,也叫是说插入的时间段,不能与数据库已存的时间段有重合的部分,是这样吗?假如你将要插入的数据的起始时间是s,结束时间是e,并且你将要插入的数据一定符合s<e,那应该是:select*fromtwhere(s<=start_timeande>start_time)or(s>=start_timeands<=end_time)如果查出数据就不能插!也就是说,如果插入数据的起始时间虽然比数据库中的起始时间小,但结束时间比起始时间大,那插入数据的时间段的后半段与数据库有重合,如果插入数据的起始时间比数据库中的起始时间大,那它只要没大过数据库中的结束时间,肯定时间的前半段与数据库有重合,如果起始时间比数据库中的结束时间还大,加上插入数据的结束时间一定比起始时间大,肯定不会有重合,所以在条件里不用考虑!
解决方案五:
没想过一个用sql完成的业务,呵呵
解决方案六:
弱弱的问下你是以系统时间为标准还是数据库时间你每次找到最大的时间然后用你要插入的数据去比较就是了

时间: 2024-08-01 09:05:26

查询SQL不能在同一时间内,插入数据的相关文章

mongodb数据库怎么查询出某一段时间内的数据

问题描述 mongodb数据库怎么查询出某一段时间内的数据 db.things.find({"createTime":{"$gt":"2014-10-29 0:0:0"}}) // 大于某个时间 db.things.find({"createTime":{"$lt":"2014-10-29 0:0:0"}}) // 小于某个时间 这种方法不行呀,限制不了范围,一查就都查出来了 解决方案

探讨SQL Server批量向数据库插入数据的性能优化问题

昨天下午快下班的时候,无意中听到公司两位同事在探讨批量向数据库插入数据的http://www.aliyun.com/zixun/aggregation/14109.html">性能优化问题,顿时来了兴趣,把自己的想法向两位同事说了一下,于是有了本文. 公司技术背景:数据库访问类(xxx.DataBase.Dll)调用存储过程实现数据库的访问. 技术方案一: 压缩时间下程序员写出的第一个版本,仅仅为了完成任务,没有从程序上做任何优化,实现方式是利用数据库访问类调用存储过程,利用循环逐条插入.

sql下三种批量插入数据的方法_MsSql

本文将介绍三种批量插入数据的方法.第一种方法是使用循环语句逐个将数据项插入到数据库中:第二种方法使用的是SqlBulkCopy,使您可以用其他源的数据有效批量加载 SQL Server 表:第三种使用的方法是sql server中的表值参数方法,表值参数是 SQL Server 2008 中的新参数类型.表值参数是使用用户定义的表类型来声明的.使用表值参数,可以不必创建临时表或许多参数,即可向 Transact-SQL 语句或例程(如存储过程或函数)发送多行数据.       代码示例:    

sql下三种批量插入数据的方法

本文将介绍三种批量插入数据的方法.第一种方法是使用循环语句逐个将数据项插入到数据库中:第二种方法使用的是SqlBulkCopy,使您可以用其他源的数据有效批量加载 SQL Server 表:第三种使用的方法是sql server中的表值参数方法,表值参数是 SQL Server 2008 中的新参数类型.表值参数是使用用户定义的表类型来声明的.使用表值参数,可以不必创建临时表或许多参数,即可向 Transact-SQL 语句或例程(如存储过程或函数)发送多行数据. 代码示例: 此例子为控制台输出

能不能同时向sql数据库两张表插入数据

问题描述 求存储过程或者语句也可,,,谢谢... 解决方案 解决方案二:两条sql不就行了insertA....insertB....解决方案三:所谓的同时是什么意思,原子操作?那要用存储过程加表锁了.如果说是必须同时成功,或同时失败.那就用事务.解决方案四:对了也可以用触发器来作解决方案五:两表有关系的话,需要加入事务处理.如果一旦失败,可以回滚操作.解决方案六:引用1楼bdmh的回复: 两条sql不就行了insertA....insertB.... ++简单省事解决方案七:引用楼主dupen

C#实现SQL批量插入数据到表的方法_C#教程

本文实例讲述了C#实现SQL批量插入数据到表的方法.分享给大家供大家参考,具体如下: #region 帮助实例:SQL 批量插入数据 多种方法 /// <summary> /// SqlBulkCopy往数据库中批量插入数据 /// </summary> /// <param name="sourceDataTable">数据源表</param> /// <param name="targetTableName"

sql查询-sql插入数据不成功。。。。

问题描述 sql插入数据不成功.... 数据库连接上了,但是执行 insert into user(name, password, age, sex, birthday) values ('李兴华', '12345', 30, '男', '1980-04-27');语句不成功,我单独在数据库上执行都可以,求解? 解决方案 单独这么一条sql语句是看不出问题的,你得贴出代码 解决方案二: 需要结合程序来看,还有就是你使用的是什么数据库呢? 解决方案三: 解决了,数据库连接错了,呵呵,谢谢二位 解决

oracle11g-使用sql语句select插入数据时怎么用行号补0为流水号做完单号保存

问题描述 使用sql语句select插入数据时怎么用行号补0为流水号做完单号保存 使用select语句像某个表中插入数据,表的单号要为该语句的ItemCode的值+5位流水号.流水号的规则是查询出来的"RowNum"的值自动补0为5为流水号.怎么出入,查询数据如图 解决方案 新增一列numerical order 类型为字符串 然后写个方法计算numerical order ,insert进去. 但只用sql语句的话,还没想到. 解决方案二: 试试这个: select itemcode

sqlserver中一条sql语句把插入数据的ID返回出来,oracle中sql语句要怎么写?

问题描述 sqlserver中一条sql语句把插入数据的ID返回出来,oracle中sql语句要怎么写? sqlserver中一条sql语句把插入数据的ID返回出来,oracle中sql语句要怎么写? 解决方案 oracle,sqlserver分页查询sql语句重复的数据只取一条,SQL语句如何写 解决方案二: select test.currval from dual 解决方案三: oracle里面不是差不多的吗