Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Как посчитать разницу между датами  [new]
ivanyurich123
Member

Откуда:
Сообщений: 5
Подскажите пожалуйста!
В таблице Flat есть поле Date. Мне нужно вывести из таблицы только те записи, у которых разница между сегодняшней датой и датой в таблице будет больше трех месяцев.

Уже просмотрел все, что мог, но не разобрался.
7 май 17, 00:05    [20463230]     Ответить | Цитировать Сообщить модератору
 Re: Как посчитать разницу между датами  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36926
where [дата в таблице] > dateadd( month, -3, getdate() )
7 май 17, 00:09    [20463239]     Ответить | Цитировать Сообщить модератору
 Re: Как посчитать разницу между датами  [new]
Aleksey br
Member

Откуда:
Сообщений: 73
ivanyurich123,

Select * from Table t
Where datediff(day, t.date, Getdate())=3
7 май 17, 18:27    [20464062]     Ответить | Цитировать Сообщить модератору
 Re: Как посчитать разницу между датами  [new]
Aleksey br
Member

Откуда:
Сообщений: 73
ivanyurich123,


Aleksey br
ivanyurich123,

Select * from Table t
Where datediff(day, t.date, Getdate())=3


Втыканул немного:
Select * from Table t
Where datediff(month, t.date, Getdate())>3
7 май 17, 18:31    [20464068]     Ответить | Цитировать Сообщить модератору
 Re: Как посчитать разницу между датами  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36926
Aleksey br
ivanyurich123,


Aleksey br
ivanyurich123,

Select * from Table t
Where datediff(day, t.date, Getdate())=3


Втыканул немного:
Select * from Table t
Where datediff(month, t.date, Getdate())>3
Зачем вы предлагаете вариант заранее ущербный не лучше в производительности, чем уже приведенный?

Сообщение было отредактировано: 8 май 17, 00:28
7 май 17, 23:31    [20464498]     Ответить | Цитировать Сообщить модератору
 Re: Как посчитать разницу между датами  [new]
Aleksey br
Member

Откуда:
Сообщений: 73
Гавриленко Сергей Алексеевич,

Ну никто не говорил, чтобы работало как можно быстрее.
Но функция как-раз возвращает разницу дат, как и написано в вопросе задания.
8 май 17, 06:24    [20464738]     Ответить | Цитировать Сообщить модератору
 Re: Как посчитать разницу между датами  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
Aleksey br
Гавриленко Сергей Алексеевич,

Ну никто не говорил, чтобы работало как можно быстрее.
Но функция как-раз возвращает разницу дат, как и написано в вопросе задания.
Но там не написано и "как можно медленнее"
8 май 17, 11:25    [20464890]     Ответить | Цитировать Сообщить модератору
 Re: Как посчитать разницу между датами  [new]
waszkiewicz
Member

Откуда:
Сообщений: 1081
Гавриленко Сергей Алексеевич
Aleksey br
ivanyurich123,


пропущено...


Втыканул немного:
Select * from Table t
Where datediff(month, t.date, Getdate())>3
Зачем вы предлагаете вариант заранее ущербный не лучше в производительности, чем уже приведенный?

можно пояснить, почему DATEADD в этом случае годнее?
8 май 17, 14:20    [20465268]     Ответить | Цитировать Сообщить модератору
 Re: Как посчитать разницу между датами  [new]
o-o
Guest
waszkiewicz
Гавриленко Сергей Алексеевич
пропущено...
Зачем вы предлагаете вариант заранее ущербный не лучше в производительности, чем уже приведенный?

можно пояснить, почему DATEADD в этом случае годнее?

да не DATEADD,
предикат у Гавриленко
date > ...
заюзает индекс по date, если он есть,
а
fn(date) > ...
нет
8 май 17, 15:11    [20465340]     Ответить | Цитировать Сообщить модератору
 Re: Как посчитать разницу между датами  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
waszkiewicz
Гавриленко Сергей Алексеевич
пропущено...
Зачем вы предлагаете вариант заранее ущербный не лучше в производительности, чем уже приведенный?

можно пояснить, почему DATEADD в этом случае годнее?
Тем что DATEDIFF вернёт неправильный результат. Ибо разница между 1 января и 30 апреля будет все еще 3 месяца, хотя на самом деле уже почти 4.

Ну и если совсем по честному, то решение Гавриленко тоже работать не будет. Знак сравнения не в ту сторону.
9 май 17, 01:13    [20466016]     Ответить | Цитировать Сообщить модератору
 Re: Как посчитать разницу между датами  [new]
ivanyurich123
Member

Откуда:
Сообщений: 5
Все большое спасибо. Все получилось!!
10 май 17, 10:13    [20467932]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить