2016-01-07 3 views
0

Я пытаюсь принять дату, которая находится в столбце varchar в таблице, добавить 1 день к ней и установить ее как значение переменной datetime. Это часть процесса, который выполняется ежедневно, и мне нужно убедиться, что день сбрасывается до одного в конце месяца. Или в конце года он не увеличивается с 151231 до 151232. Проблема, с которой я сталкиваюсь, заключается в преобразовании @Date обратно в числовое значение в форме YYMMDD. Например, VIRN_CHK = '151231', @Date, как указано ниже, является «1 января 2016 года 12:00». Мне нужно преобразовать его в 160101, чтобы сохранить его в столбце в другой таблице типа numeric (6,0).Преобразование даты и времени в числовое

DECLARE @Date as datetime 
set @Date = convert(varchar,dateadd(d, 1,(select top(1) VIRN_CHK from STAGE_INST))) 
update cdcdatei 
set OT_DATE = @Date 

ответ

0

Это будет работать, восстанавливая формат строки

SELECT RIGHT(YEAR('2015-11-01'),2) 
    + RIGHT('00' + CAST(MONTH('2015-11-01') AS VARCHAR(2)),2) 
    + RIGHT('00' + CAST(DAY('2015-11-01') AS VARCHAR(2)),2) 
0

Так что вам нужно извлечь год, месяц и день номера с даты? Вы можете к тому, что с помощью DATEPART

DATEPART(yy,dateadd) AS DateYear, 
DATEPART(mm,dateadd) AS DateMonth, 
DATEPART(dd,dateadd) AS DateDay 

, то вы можете умножать и суммировать их, чтобы получить то, что вам нужно

VIRN_CHK = DateDay + DateMont * 100 + DateYear * 10000