SQL Server 按时间段查询数据 表内时间为空时怎么处理?
假设我的存储过程名称为mysp_select_sth,表名称为MyTable;现在我想通过[时间]范围来查找一条数据;查找的时候我的做法是:1、如果查找条件栏起始时间无输...
假设我的存储过程名称为mysp_select_sth,表名称为MyTable;现在我想通过[时间]范围来查找一条数据;查找的时候 我的做法是:1、如果查找条件栏起始时间无输入则赋值@DateStart = “1949-10-1”(很早之前)2、如果查找条件栏起始时间无输入则赋值@DateStart = “2949-10-1”(很晚之后) 这样我就能找到对应的记录了,但是现在有一个问题就是:如果表里面的[时间]没有数据时,我希望忽略掉这个查询条件,请问该如何来做呢?万分感谢!注:上句的意思大致为:如果表里面的[时间]更新了,我希望能通过[时间]来查找到这条数据;如果[时间]没更新,我希望通过其他条件来找到该数据,来更新时间;我的存储过程大致代码如下: CREATE PROCEDURE [dbo].[mysp_select_sth] @NO nvarchar(20), @DateStart DATETIME, @DateEnd DATETIMEASSET NOCOUNT ON SELECT * FROM [MyTable] WHERE (isnull(@NO,'')='' or [序号] = @NO) AND ([时间] >= @DateStart) AND ([时间] <= @DateEnd)
- -。刚才没测试好就采纳了,不是故意重复提问~~
@frogley
接追问部分。。。
上述方法实现:
1、当查找的时候限制了时间段,时间为空的依然显示出来了,(可以滤掉不符合时间段的数据)
2、符合意图
比如说:我限制了时间段为1-1到1-9号,[时间]①没有数据的显示了出来,②符合这个时间段的显示了出来,③不符合的没有显示出来
想要去掉①,让①不显示,有办法吗? 展开
- -。刚才没测试好就采纳了,不是故意重复提问~~
@frogley
接追问部分。。。
上述方法实现:
1、当查找的时候限制了时间段,时间为空的依然显示出来了,(可以滤掉不符合时间段的数据)
2、符合意图
比如说:我限制了时间段为1-1到1-9号,[时间]①没有数据的显示了出来,②符合这个时间段的显示了出来,③不符合的没有显示出来
想要去掉①,让①不显示,有办法吗? 展开
3个回答
展开全部
呃,刚才就是我答的。
CREATE PROCEDURE [dbo].[mysp_select_sth](
@NO nvarchar(20),
@DateStart DATETIME,
@DateEnd DATETIME )
AS
SET NOCOUNT ON
SELECT *
FROM
[MyTable]
WHERE
(isnull(@NO,'')='' or [序号] = @NO)
AND (isnull([时间],'')='' or [时间] >= @DateStart)
AND (isnull([时间],'')='' or [时间] <= @DateEnd)
这段代码,你测试有什么问题呢?
更多追问追答
追问
我要按时间段来查找的话,时间段的限制没有效果,就是说
AND (isnull([时间],'')='' or [时间] >= @DateStart)
AND (isnull([时间],'')='' or [时间] <= @DateEnd)
这部分一直是true;
追答
不会啊,我测试过这段代码的。如果时间不为null,且时间不位于@DateStart和@DateEnd之间的时候,这个条件为假。
你把[时间]、@DateStart和@DateEnd这三个值都打印出来看看呢?
展开全部
你的这个设计思路有问题,在数据库中,对于同等一个时间,没有更新非更新之说。
你如果要实现这种功能的话,可能需要多个时间,比如提交时间,审批时间,更新时间等等的。
你如果要实现这种功能的话,可能需要多个时间,比如提交时间,审批时间,更新时间等等的。
追问
我的更新的意思是说,原来在这个[ 时间]的值是空的,我往上写数据(DATETIME),比如:2014-1-13,这样的更新(使用到了update);- -这个设计思路应该没啥问题吧?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
加个条件 时间不为空 就好了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询