Как я могу преобразовать полученную дату в формат ггггммдд? - PullRequest
0 голосов
/ 17 октября 2018

Мне нужно конвертировать getdate() в yyyymmdd формат.В конце концов мне нужно вернуться на 3 года назад и игнорировать заказы старше 3 лет.

Я не уверен, что преобразовал GETDATE() в yyyymmdd правильно или нет.

Это то, что я сделал DATEADD(YYYY,-3,CONVERT(VARCHAR(8),GETDATE(),112 ) > D.REQUESDATE

D.REQUESDATE хранится в десятичном формате.Должен ли я сначала преобразовать его в строку или целое число.

Какой должен быть мой путь для выполнения этого запроса?

Ошибка

"Ошибка арифметического переполнения при преобразовании выражения в тип данных datetime. "

SELECT  
    MYCOLUMNS
      ,D.[EXPDATE]
     FROM MYTABLE
       JOIN TABLES

DATEADD (ГГГГ, -3, CONVERT (VARCHAR (8), GETDATE (), 112)> D.REQUESDATE

Заранее спасибо!

Ответы [ 5 ]

0 голосов
/ 17 октября 2018

Уверен, учитывая недавно обнаруженные требования, что нечто подобное должно работать.

Convert(int, DATEADD(Year, -3, GETDATE()), 112) > D.REQUESDATE
0 голосов
/ 17 октября 2018

Ваш существующий запрос может работать.Вы получаете только ошибку, потому что вам не хватает закрывающей скобки, попробуйте ...

AND DATEADD(YYYY,-3,CONVERT(VARCHAR(8),GETDATE(),112 )) > D.REQUESDATE
0 голосов
/ 17 октября 2018

Вам нужно поместить DATEADD () внутри CONVERT (), а не наоборот.В противном случае DATEADD () неявно преобразует тип данных обратно в datetime.

. Причина синтаксической ошибки в вашем вопросе заключается в том, что у вас отсутствует закрывающая скобка.

0 голосов
/ 17 октября 2018

это будет работать:

  and add_months(sysdate,-36)>D.REQUESDATE

SQL Server эквивалент:

DATEADD(year, -3, getdate())>D.REQUESDATE

DATEADD(yy, -3, getdate())>D.REQUESDATE

DATEADD(yyyy, -3, getdate())>D.REQUESDATE
0 голосов
/ 17 октября 2018

DATEADD(Year, -3, GETDATE()) > D.REQUESTDATE

Вам не нужно преобразовывать формат даты для сравнения, если REQUESTDATE не date или datetime.

DATEADD(Year, -3, GETDATE()) > CAST(D.REQUESTDATE AS datetime)

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