***查询时间的SQL语句***

bigmingming 2015-02-09 04:04:42
表A
ID BeginTime EndTime
1 空 2010
2 空 空
3 1990 空
3 1980 1985


查询参数: 1992-01 年月在表中的数据


应该找到
ID BeginTime EndTime
1 空 2010
2 空 空
3 1990 空

如何写查询SQL存储过程
...全文
220 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
antjl 2015-02-10
  • 打赏
  • 举报
回复
Create Table ##表A 
(
ID Int,
BeginTime Varchar(4),
EndTime Varchar(4)
)   

Insert Into ##表A  
Select 1,'','2010' 
Union All 
Select 2,'','' 
Union All
Select 3,'1990','' 
Union All
Select 3,'1980','1985' 

Declare @QueryTime As varchar(7)

Set @QueryTime='1992-01'

Select * From ##表A
Where Cast(Case When BeginTime<>'' Then BeginTime+'-1-1'  Else @QueryTime+'-1' End As DateTime)<=Cast(@QueryTime+'-1' As DateTime)
And Cast(Case When EndTime<>'' Then EndTime+'-1-1'  Else @QueryTime+'-1' End As DateTime)>=Cast(@QueryTime+'-1' As DateTime)


Drop Table ##表A
C_B_Lu 2015-02-10
  • 打赏
  • 举报
回复

;With Cte As 
(
	Select * From
	(
		Select 1 As Id, Null As BeginTime, '2010' As EndTime Union All
		Select 2, Null,Null Union All
		Select 3,'1990',Null Union All
		Select 3,'1980','1985'
	) As T
)
Select *
From Cte
Where Cast(Isnull(BeginTime,'1992') As Int) Between 1992 And 2001
  Or Cast(Isnull(EndTime,'2001') As Int) Between 1992 And 2001
还在加载中灬 2015-02-10
  • 打赏
  • 举报
回复
你的时间是什么类型,字符串?整型? 还是时间类型
--以下查询假设时字符串
DECLARE @SearchTime DATETIME
SET @SearchTime='1992-01-01'
SELECT * FROM A
WHERE(BeginTime IS NULL OR BeginTime<=@SearchTime)
	AND (EndTime IS NULL OR EndTime>=@SearchTime)
唐诗三百首 2015-02-10
  • 打赏
  • 举报
回复

create table 表A
(ID int,BeginTime varchar(10),EndTime varchar(10))

insert into 表A
 select 1,'空','2010' union all
 select 2,'空','空' union all
 select 3,'1990','空' union all
 select 3,'1980','1985'


declare @x varchar(10) -- 查询参数
select @x='1992-01'

select * 
 from 表A
 where left(@x,4) between 
 case when BeginTime='空' then '0' else BeginTime end
 and case when EndTime='空' then '99999' else EndTime end
 
/*
ID          BeginTime  EndTime
----------- ---------- ----------
1           空          2010
2           空          空
3           1990       空

(3 row(s) affected)
*/
bigmingming 2015-02-10
  • 打赏
  • 举报
回复
谢谢了!!!

34,575

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧