SQL-Date-Question: как получить дату Yesterdays в следующем формате

Вот что у меня до сих пор

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

ДОХОДНОСТЬ

2011-03-10 13:46:00

Что мне нужно:

2011-03-09

Ответ 1

Попробуйте следующее:

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

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

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

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

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

Ответ 2

В 2008 году вы можете использовать новый тип данных DATE:

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

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

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

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

Ответ 3


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

Ответ 4

SELECT CONVERT(VARCHAR, DATEADD(d,-1,GETDATE()), 110) AS Yesterday