0

在此处输入图像描述在 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'记录出现在我的选择语句中,它不应该出现日期不同,这是我的查询。

4

1 回答 1

0

假设您希望记录将仅显示IF 两者 REQ_FRMDATE并且REQ_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)
于 2013-02-11T08:39:01.350 回答