SQL-Date-Question: Как получить вчерашнюю дату в следующем формате - PullRequest
12 голосов
/ 10 марта 2011

Вот то, что у меня есть

declare @Today smalldatetime
Set @Today = GETDATE()
select @Today

ДОХОДНОСТЬ

2011-03-10 13:46:00

Что мне нужно, так это:

2011-03-09

Ответы [ 4 ]

9 голосов
/ 10 марта 2011

Попробуйте это:

SELECT REPLACE(CONVERT(VARCHAR, DATEADD(dd, -1, GETDATE()), 102), '.', '-')

GETDATE() возвращает текущую дату / время.

DATEADD(dd, -1, GETDATE()) вычитает один день из текущей даты / времени.

CONVERT(VARCHAR, @DATE, 102) преобразует дату в формат ANSI yyyy.mm.dd

и REPLACE заменит точки в предварительно заданном формате дефисами в соответствии с вашим примером.

9 голосов
/ 10 марта 2011

В 2008 году вы можете воспользоваться новым ДАТА тип данных:

SELECT CAST(DATEADD(d,-1,GETDATE()) AS DATE) AS Yesterday

Для всех версий:

SELECT CONVERT(CHAR(10), DATEADD(d,-1,GETDATE()), 120) AS Yesterday

Очевидно, тип данных, возвращаемый каждымметод отличается.

2 голосов
/ 10 марта 2011

SELECT CONVERT(varchar, DATEADD(d,-1,GETDATE()), 110) 

или


SELECT CAST(DATEADD(d,-1,GETDATE()) AS DATE) AS 'DATE' 

Хорошая справка, если вам когда-нибудь понадобятся эти коды снова. http://www.w3schools.com/sql/func_convert.asp

1 голос
/ 10 марта 2011
SELECT CONVERT(VARCHAR, DATEADD(d,-1,GETDATE()), 110) AS Yesterday
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...