用小时和分钟查找两个日期之间的日期?在Sql server中?

时间:2013-02-11 07:20:28

标签: sql-server-2008

enter image description here在sql中,我编写了一个select语句来查找日期。我在这里包括时间也是我的选择声明....

                  select * from test where           
(
(
(DATEDIFF (day,@dat1,req_frmdate)=0 or DATEDIFF (day,@dat2,req_todate)=0)
and
(DATEDIFF (HOUR,@dat1,req_frmdate)=0 or DATEDIFF (HOUR,@dat2,req_todate)=0)
and 
(DATEDIFF (MINUTE,@dat1,req_frmdate)=0 or DATEDIFF (MINUTE,@dat2,req_todate)=0)
)       
or
  (
( @dat1 between req_frmdate and req_todate) or
( @dat2 between req_frmdate and req_todate) or
(req_frmdate between @dat1 and @dat2) or
( req_todate between @dat1 and @dat2)
)       
        )

但是当我通过约会时,它没有考虑时间。  这个查询是对的吗?当我传递日期时例如@ date1 ='2013-02-20 09:00' 和@ date2 ='2013-02-20 12:00'但是我的数据库中没有关于此日期和时间的记录 我的数据库中有一条记录:req_frmdate ='2013-02-20 13:00'和req_todate ='2013-02-20 16:00'

在我的桌子的屏幕截图中,当我通过这两个日期时,我的表中有该记录 喜欢@ date1 ='2013-02-20 9:00'和@ date2 ='2013-02-20 12:00'记录来自我的select语句,它不应该是日期不同,这是我的查询

1 个答案:

答案 0 :(得分:0)

假设您希望记录仅显示如果 REQ_FRMDATEREQ_TODATE都在您的两个参数的日期之间,那么您可以使用BETWEEN条款:

DECLARE @dat1 DATETIME SET @dat1 ='2013-02-20 09:00.000'
DECLARE @dat2 DATETIME SET @dat2 ='2013-02-20 12:00.000'
SELECT * 
FROM test 
WHERE
   (req_frmdate BETWEEN @dat1 AND @dat2)
   AND (req_todate BETWEEN @dat1 AND @dat2)