Получить дату менее 1 дня - PullRequest
       0

Получить дату менее 1 дня

0 голосов
/ 23 сентября 2019

Я хочу знать данные за 19 сентября.

Когда вводится 20-дневное значение, я не знаю, как выразить выражение переменной, чтобы получить значение предыдущего дня.(@ TransDate-1) <---- Как я могу это исправить?(тип данных только varchar) </p>

DECLARE @TransDate VARCHAR(10)
SET @TransDate = '2019-09-20'

SELECT ItemCode, SUM(Quantity)
FROM INVENTORYOUTDETAIL
WHERE TransDate <= @TransDate-1 AND FacilityCode = '10' AND OutType='MOVE' 
GROUP BY ItemCode

1 Ответ

1 голос
/ 23 сентября 2019

Использование DATEADD():

DATEADD(day, -1, @TransDate)

Демонстрация на DB Fiddle :

DECLARE @TransDate DATE
SET @TransDate = '2019-09-20'
SELECT DATEADD(day, -1, @TransDate)
| (No column name)    |
| :------------------ |
| 19/09/2019 00:00:00 |

В вашем запросе:

SELECT ItemCode, SUM(Quantity)
FROM INVENTORYOUTDETAIL
WHERE 
    TransDate <= DATEADD(day, -1, @TransDate) 
    AND FacilityCode = '10' 
    AND OutType='MOVE' 
GROUP BY ItemCode

Примечание: вы должны объявить переменную @TransDate как DATE вместо VARCHAR, а затем:

  • , если столбецTransDate имеет тип данных DATE, вы можете сравнить его непосредственно с переменной

  • , если столбец TransDate равен VARCHAR, самый безопасный способ -сначала перед сравнением преобразовать его в DATE, поэтому: CONVERT(date, TransDate) <= DATEADD(day, -1, @TransDate)

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