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