比较SQL Server中的日期

时间:2014-07-15 13:17:31

标签: sql sql-server date sql-server-2008-r2

我有一个名为DateTime的{​​{1}}列,其中包含如下日期:

EXP_Date

我想比较它们,比如这个查询:

2014-07-13 00:00:00.000

我希望看到服务过期超过一个月的客户数量。

我知道这个查询不会给我正确的答案,最好的方法是将年/月/日分成三列,但不是任何其他方式来比较它们,因为它们是?

4 个答案:

答案 0 :(得分:4)

您可以使用DATEADD

 SELECT COUNT(*)
 FROM DB
 where EXP_DATE < DATEADD(month, -1, GETDATE())

答案 1 :(得分:2)

试试这个

 SELECT COUNT(*)
 FROM DB
 where  DATEADD(month, -1, GETDATE()) > EXP_DATE

答案 2 :(得分:2)

 SELECT COUNT(EXPIRE)FROM 
 (Select CASE WHEN  EXP_DATE < DATEADD(month, -1, GETDATE())THEN 1 ELSE 0 END)AS EXPIRE FROM DB
  )tt

答案 3 :(得分:2)

使用 DATEDIFF

的另一种方法
SET DATEFORMAT DMY  --I like to use "dateformat"

SELECT  COUNT(*)
FROM DB
WHERE (DATEDIFF(DAY,@EXP_DATE,GETDATE())) >= 30 --Remember, instead "Day" you can use week, month, year, etc

语法:DATEDIFF(datepart,startdate,enddate) 离开:年,季,月,日,周......

有关详细信息,请访问MSDN