Преобразование даты с "19 января 2019 г. на 02 января 2019 г."

Как преобразовать значения столбца varchar(25) из дат в формате "JAN02/19" в "2019-01-02"(ГГГГ-ММ-ДД)?

2 ответа

Решение

Возможно что-то вроде этого

Declare @S varchar(25)='JAN02/19'

Select try_convert(date,replace(@S,'/',' 20'))

Возврат

2019-01-02

Вы можете сделать что-то вроде ниже:

DECLARE @Date Varchar(10)
Set @Date='JAN02/19'
select DATEFROMPARTS('20'+substring(@Date,7,2),CHARINDEX(@Date,'JAN FEB MAR APR MAY JUN JUL AUG SEP OCT NOV DEC')/4+1,substring(@Date,4,2))

Это должно дать результат в желаемом формате.

Редактировать:

Чтобы учесть неправильные значения месяца:

DECLARE @Date Varchar(10)
Set @Date='JAN02/19'
select DATEFROMPARTS('20'+substring(@Date,7,2),NULLIF(CHARINDEX(substring(@Date,1,3),'JAN FEB MAR APR MAY JUN JUL AUG SEP OCT NOV DEC'),0)/4+1,substring(@Date,4,2))

Это вернет NULL в случае неправильного значения месяца.

Другие вопросы по тегам