请教一个查询时间范围的SQL

jadesun 2003-08-18 05:59:47
用户输入的时间段范围在这个时间段范围中


数据库中的字段存储如下:

price Start_Date End_Date
20 2003-07-01 00:00:00.000 2003-08-31 00:00:00.000
.....
...........


用户也要输入两个日期值

--输入这样的日期合法
U_Start_Date ----> 2003-07-03
U_End_Date ---> 2003-07-05

--这样的日期也合法

U_Start_Date ----> 2003-07-01
U_End_Date ---> 2003-08-12

就是说,用户输入的时间范围必须在数据库的时间范围内则正确
...全文
370 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
benxie 2003-08-18
  • 打赏
  • 举报
回复
反正就是:
1,BETWEEN ‘STARTDATE’ AND ‘ENDDATE’
2,>=‘STARTDATE’ <=‘ENDDATE’
pengdali 2003-08-18
  • 打赏
  • 举报
回复
if exists(select 1 from 表 where price=20 and @U_Start_Date between Start_Date and End_Date and @U_End_Date between Start_Date and End_Date)
select '正确'
else
select '错误'
txlicenhe 2003-08-18
  • 打赏
  • 举报
回复
select * from 表 
where @U_start_Date between Start_Date and @U_End_Date
and @U_End_Date between @U_start_Date and End_Date

karach 2003-08-18
  • 打赏
  • 举报
回复
如果你是在程序中控制的话也可以阿,在程序中控制用户输入的日期范围在这里范围之内
hjb111 2003-08-18
  • 打赏
  • 举报
回复
create proc P_CheckDate @price varchar(25),@startdate datetime,@enddate datetime
as
if @startdate<='2003-07-01 00:00:00 000' or @enddate>='2003-08-31 00:00:00 000'
begin
Select '你输入有非法值'
return
end
else
insert into yourtable values(@price,@startdate,@enddate)

Go

exec('P_CheckDate '21','2003-08-10','2003-09-10')

amtyuranus 2003-08-18
  • 打赏
  • 举报
回复
在存储过程里直接比较好了
U_Start_Date >Start_Date and U_Start_Date <End_Date
正确

34,575

社区成员

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

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