将两个输入日期与SQL Server中表中的另外两个日期进行比较

时间:2016-09-29 06:18:02

标签: c# mysql sql asp.net

我希望按两个日期输入(FROM_DATE& TO_DATE)来过滤两个日期之间的记录(@frm_dt& @to_dt),如果我给出两个日期(@frm_dt& @to_dt)作为两个输入我想过滤记录取决于FROM_DATETO_DATE之间的可用日期。 我在这种情况下打了一个多星期。 我的英语沟通能力很差。请帮助我。

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-01-01& to_dt为2017-06-30,它应该返回所有记录,因为这两个日期介于FROM_DATE&之间。 TWO_DATE。 同样,如果我将@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 .

4 个答案:

答案 0 :(得分:0)

如果我理解正确,您必须决定是否要:a)所有与两个输入日期重叠的记录,或b)两个输入日期中包含的所有记录。因此,根据您的决定,你应该设置yor WHERE条件: 一个) youTable.FromDate< = @DATE_TO和yourTable.ToDate> = @DATE_FROM。 b) youTable.FromDate> = @DATE_FROM和yourTable.ToDate< = @DATE_TO。 希望这有帮助 保罗

答案 1 :(得分: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

答案 2 :(得分: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)

答案 3 :(得分:-1)

您可以查看check W3SCHOOL!这里。 我想你会尝试INBETWEEN和BETWEEN。