2013-05-08 4 views
1

Мне нужно добавить 1 день к текущей дате и иметь выход в формате yyyymmdd. Код должен быть записан в хранимой процедуре на сервере sql.Как добавить 1 день к текущей дате и получить результат в формате yyyymmdd в SQL Server?

В настоящее время мой код выглядит следующим образом:

DECLARE @dat DATE 

    select @dat = dateadd(DD, 1, getdate()) 
    SELECT @dat =LEFT(CONVERT(VARCHAR(8), @dat, 112),10) 

Тем не менее, кажется, что им делать что-то неправильно, как мой выход на столе SQL в формате гггг-мм-дд. Мне нужно избавиться от дефисов.

любые предложения ребята? заранее спасибо.

+3

Почему вы заботитесь о тире? Вы возвращаете * дату *, а не строку *. Беспокоитесь о форматировании на клиенте. Прямо сейчас вы расстраиваетесь о том, как Management Studio передает вам дату. Кроме того, прекратите использовать ленивую стенографию. Почему «ДД» лучше, чем «ДЕНЬ»? –

+3

Вы хотите, чтобы строка или дата были выведены в Proc? Если вам нужна дата, то формат не имеет значения, если вам нужна строка, то измените объявление @dat на строку. –

+0

спасибо за предложения. хотел, чтобы в качестве вывода была строка. – Kasanova

ответ

0
select @dat = dateadd(DD, 1, getdate()) 
DECLARE @datCus varchar(8) 
select @datCus=LEFT(CONVERT(VARCHAR(8), @dat, 112),10) 

Проблема заключалась в том, что я назначен @dat к значениям инструкции вставки. Однако наличие переменной varchar для обработки конвертирующей части решает проблему (в данном случае @datCus).

1

Изменение декларирование @dat к STRING

3

Вопрос заключается в том, что вы назначаете его обратно на объект даты. Вам нужно назначить его varchar.

я сделал следующее в SQL Server 2005:

DECLARE @dat DATETIME 
DECLARE @string varchar(8) 
SET @dat = GetUtcDate() 

    select @dat = dateadd(DD, 1, getdate()) 

    SELECT @string =CONVERT(VARCHAR(8), @dat, 112) 
PRINT @string 
0

Попробуйте один -

DECLARE @date VARCHAR(8) 
SELECT @date = CONVERT(VARCHAR(8), DATEADD(DAY, 1, GETDATE()), 112) 

SELECT @date 
Смежные вопросы