Как выбрать элементы, срок действия которых истекает в течение определенного времени в SQL Server? - PullRequest
0 голосов
/ 18 июня 2019

Я использую SQL Server 2008 с приложением C # Windows Forms.Таблица продуктов имеет другие значения наряду с датой истечения срока действия, и я хочу показать ProductID, ProductName, AvailableQuantity, and ExpiryDate в сетке, чтобы я мог позволить пользователям получить представление об элементах, срок действия которых истекает до установленного срока.

Цельсостоит в том, чтобы добавлять в сетку только те товары, срок годности которых приближается, то есть срок годности которых истекает через 2 месяца.

Я пытался использовать функцию TRUNC, как показано ниже:

select * 
from tblProducts 
where DateExpiry < TRUNC( SYSDATE ) + INTERVAL '62' DAY;

но я получаю следующую ошибку в SQL Server 2008:

Сообщение 195, уровень 15, состояние 10, строка 1
'TRUNC' не является распознанным именем встроенной функции.

Почему я получаю эту ошибку?В Интернете я видел, что тот же код работает нормально, однако в моем случае он генерирует ошибку.Есть ли другой способ удовлетворить мои требования?Или мне нужно как-то изменить запрос, что может помочь мне решить мою ошибку?

Ответы [ 2 ]

2 голосов
/ 18 июня 2019

В SQL Server вы должны сделать это.

select * 
from tblProducts 
where DateExpiry < DATEADD(month, 2, GETDATE());
1 голос
/ 18 июня 2019

DateDiff может использоваться для вычисления общего периода времени между двумя датами. Эти даты могут быть как из табличных значений, так и из «сегодняшних». Я бы посоветовал вам различать общее количество дней, а не месяцев, потому что «месяц» - это переменное количество времени, которое часто меняется.

select * 
from tblProducts 
where DATEDIFF(day, GETDATE(), DateExpiry) < 62

Предполагается, что DateExpiry должно быть больше текущей даты, потому что мы ищем значения, которые еще не истекли, но должны скоро.

Вместо того, чтобы пытаться вычислить, что означает «сегодня плюс 62 дня», а затем пытаться увидеть, меньше ли значение базы данных, эта команда просто вычитает значение базы данных из текущей даты и проверяет, меньше ли оно числа.

Это выбирает все, что истекает менее чем через 62 дня с сегодняшнего дня.

Подробнее о DateDiff .

...