按日期搜索SQL Server 2005

时间:2010-08-11 12:50:54

标签: sql-server-2005 tsql

大家好,我想在今天的日期之前收到发票和客户的搜索数据 我正在使用GETDATE()

例如两个表

1个客户

 - ID   int
 - Name Varcher

2发票

 - ID int
 - ClientID int
 - date  Datetime
 - Total  money

查询

  Select * 
  from client c 
        inner join invoice i on c.id = i.ClientID 
  where i.date = getdate()

结果

  nothing 

但我今天有一些数据有相同的日期

5 个答案:

答案 0 :(得分:1)

尝试按照条件

进行操作
WHERE DateDiff(dd, OrderDate, getdate()) = 0
or 
WHERE Convert(varchar(20), OrderDate, 101) = Convert(varchar(20), getdate(), 101)

所以你的回答是

Select * 
  from client c 
        inner join invoice i on c.id = i.ClientID 
  WHERE DateDiff(dd, i.date, getdate()) = 0

答案 1 :(得分:1)

单程

where i.date >= DATEADD(dd, DATEDIFF(dd, 0, GETDATE()), 0),
and i.date < DATEADD(dd, DATEDIFF(dd, 0, GETDATE())+1 , 0)

答案 2 :(得分:1)

GETDATE()返回日期和时间。

我们需要将日期定在今天的开头。

SELECT * 
FROM client c 
INNER JOIN invoice i 
   ON c.id = i.ClientID 
WHERE i.date >= CAST(FLOOR(CAST(GETDATE() AS float)) AS DATETIME)

答案 3 :(得分:0)

尝试使用DATEPART而不仅仅是getdate()(只会完全匹配日期):

WHERE DATEPART(dy, GETDATE()) - DATEPART(dy, i.date) <= 1

这将为您提供单日范围内的所有日期。

答案 4 :(得分:0)

Select * from client c left join invoice i on c.id = i.ClientID where i.date = getdate()