Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在SQL Server中比较日期_Sql_Sql Server_Date_Sql Server 2008 R2 - Fatal编程技术网

在SQL Server中比较日期

在SQL Server中比较日期,sql,sql-server,date,sql-server-2008-r2,Sql,Sql Server,Date,Sql Server 2008 R2,我有一个名为EXP_Date的DateTime列,其中包含如下日期: 2014-07-13 00:00:00.000 我想比较它们,如以下查询: SELECT COUNT(*) FROM DB WHERE ('2014-07-15' - EXP_DATE) > 1 我希望看到服务过期超过一个月的客户数量 我知道这个查询不会给我正确的答案,最好的方法是将年/月/日分为三列,但没有其他方法可以比较它们吗?您可以使用 试试这个 SELECT COUNT(*) FROM DB wher

我有一个名为EXP_Date的DateTime列,其中包含如下日期:

2014-07-13 00:00:00.000
我想比较它们,如以下查询:

SELECT COUNT(*)
FROM DB
WHERE ('2014-07-15' - EXP_DATE)  > 1
我希望看到服务过期超过一个月的客户数量

我知道这个查询不会给我正确的答案,最好的方法是将年/月/日分为三列,但没有其他方法可以比较它们吗?

您可以使用

试试这个

 SELECT COUNT(*)
 FROM DB
 where  DATEADD(month, -1, GETDATE()) > EXP_DATE
使用DATEDIFF的另一种方法

语法:DATEDIFF datepart、startdate、enddate 出发日期:年、季、月、日、周

有关更多信息,请访问


对一些人来说可能是这样。我更喜欢这个。是的,这只是一个观点,事实上。。。只是想知道是否有一个具体的原因;如果我想查看已过期至少2个月但不超过5个月的客户数量,2=DATEADDmonth,-5,GETDATE您在表中使用的数据类型是什么?您测试了SQL Server 2000、2005、2008、2008 R2、2012、2014的哪个版本?数据类型=日期时间版本=2008 R2?它不工作,此错误:Msg 156,级别15,状态1,第2行关键字“FROM”附近的语法不正确。事实上,有这样的案例是非常有用的
 SELECT COUNT(*)
 FROM DB
 where  DATEADD(month, -1, GETDATE()) > EXP_DATE
 SELECT COUNT(EXPIRE)FROM 
 (Select CASE WHEN  EXP_DATE < DATEADD(month, -1, GETDATE())THEN 1 ELSE 0 END)AS EXPIRE FROM DB
  )tt
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