Поиск по дате SQL Server 2005 - PullRequest
       1

Поиск по дате SQL Server 2005

0 голосов
/ 11 августа 2010

Привет всем, я хочу, чтобы поиск данных из счетов-фактур и клиента на сегодняшний день Я использую 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 ]

1 голос
/ 11 августа 2010

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)
1 голос
/ 11 августа 2010

в одну сторону

where i.date >= DATEADD(dd, DATEDIFF(dd, 0, GETDATE()), 0),
and i.date < DATEADD(dd, DATEDIFF(dd, 0, GETDATE())+1 , 0)
1 голос
/ 11 августа 2010

Попробуйте следовать, где условие

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
0 голосов
/ 11 августа 2010

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

0 голосов
/ 11 августа 2010

Попробуйте использовать DATEPART вместо просто getdate () (который будет точно соответствовать датам ТОЧНО):

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

Это даст вам все даты в диапазоне одного дня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...