2016-09-29 29 views
0

我想两个日期输入(@frm_dt & @to_dt)两个日期(FROM_DATE & TO_DATE)之间筛选记录,如果我给两个日期( @frm_dt & @to_dt)作为两个输入我想过滤记录取决于可用日期FROM_DATETO_DATE之间。 我已经在这种情况下超过一个星期。 我在英文沟通方面有点不好。比较表中的另外两个日期在SQL Server中的两个输入日期

FROM_DATE  TO_DATE 
2017-01-02 . 2017-06-30 . 
2017-01-02 . 2017-09-30 . 
2017-01-02 . 2017-12-31 . 
2017-01-02 . 2017-10-31 . 
2017-01-02 . 2017-11-30 . 
2017-01-02 . 2017-10-31 . 
2017-01-02 . 2017-09-29 . 
2017-01-02 . 2017-12-31 . 
2017-01-02 . 2017-08-31 . 
2017-01-02 . 2017-11-30 . 
2017-01-02 . 2017-10-31 . 
2017-01-02 . 2017-10-30 . 
2017-01-02 . 2017-09-30 . 
2017-01-02 . 2017-09-30 . 

,如果我给@frm_dt为2017年1月1日& to_dt为二○一七年六月三十日,它应该是因为这两个日期是FROM_DATE & TWO_DATE之间返回所有recorde。 同样,如果我给@frm_dt为2017年10月31日& to_dt作为2017-12-25.it应该只返回以下日期

FROM_DATE  TO_DATE 
2017-01-02 . 2017-12-31 . 
2017-01-02 . 2017-10-31 . 
2017-01-02 . 2017-11-30 . 
2017-01-02 . 2017-10-31 . 
2017-01-02 . 2017-12-31 . 
2017-01-02 . 2017-11-30 . 
2017-01-02 . 2017-10-31 . 

回答

0

如果我理解正确的话,你必须决定是否要:A)与两个输入日期重叠的所有记录,或者b)两个输入日期中包含的所有记录。因此,随着您的决定,您的订单是WHERE条件:

a) WHERE yourTable.FromDate <= @DATE_TO and yourTable.ToDate >= @DATE_FROM

b) WHERE yourTable.FromDate >= @DATE_FROM and yourTable.ToDate <= @DATE_TO

希望这有助于

保罗

0

只需在数据库中执行此查询,您将获得输出。

Create procedure ReturnDates(
    @fromDate datetime, 
    @todate datetime 
) 
    AS BEGIn 
Select From_dt ,TO_DT 
from tablename 
WHERE FROM_DT >= @fromDate and TO_DT <= @todate 
END 
GO 
0

请使用条件:

WHERE CAST(FROM_DATE AS DATETIME) >= CAST(@frm_dt AS DATETIME) AND 
CAST(TO_DATE AS DATETIME) <= CAST(@to_dt AS DATETIME) 

或者你可以用这个条件:

WHERE CONVERT(NVARCHAR(10), FROM_DATE, 121) >= CONVERT(NVARCHAR(10), @frm_dt, 121) AND 
CONVERT(NVARCHAR(10), TO_DATE, 121) <= CONVERT(NVARCHAR(10), @to_dt, 121)