如何获得一份客户名单,在两个日期的给定时间间隔内,他们的年龄为5年或10年?
只有一个日期的查询是:
SELECT * FROM Customers C
WHERE DATEDIFF(MONTH,C.StartDate,@Date)=60
OR DATEDIFF(MONTH, C.StartDate,@Date)=120
答案 0 :(得分:4)
您希望客户在开始时为5或更少,最后为5或更高 - 这意味着在该范围内的某个时间点他们是5。
SELECT * FROM Customers C
WHERE (DATEDIFF(MONTH,C.StartDate,@StartDate)<=60 AND DATEDIFF(MONTH,C.StartDate,@EndDate) >=60)
OR (DATEDIFF(MONTH,C.StartDate,@StartDate)<=120 AND DATEDIFF(MONTH,C.StartDate,@EndDate) >=120)
答案 1 :(得分:1)
您可以使用下面的查询 的 See live demo 强>
DECLARE @Date1 DATE
DECLARE @Date2 DATE
SET @Date1='03-19-2017'
SET @Date2='12-19-2017'
SELECT * FROM Customers C
WHERE ( DATEADD(m, 60,C.StartDate) BETWEEN @Date1 AND @Date2 )
OR
(DATEADD(m, 120,C.StartDate) BETWEEN @Date1 AND @Date2)
答案 2 :(得分:0)
T-SQL的datediff函数的语法是:
DATEDIFF ( datepart , startdate , enddate )
日期的顺序很重要,要获得正整数结果,较早的日期应该是第一个,而较晚的日期应该是第二个。如果你这样做,结果将是负数。
您可以使用ABS()
来解决这个问题ABS( DATEDIFF ( datepart , date1 , date2 ) )