Cześć, pracuję z SQL 2014 i muszę konwertować następujące formaty 2 daty:

12/31/18 - Varchar 
12/31/2018 - Varchar

Do tego formatu Final Format

December 31,2018 Varchar

Wiem, że użycie Varchar nie jest poprawne. jakieś sugestie?

1
Pablo Gûereca 28 luty 2019, 09:54

2 odpowiedzi

Najlepsza odpowiedź

Spróbuj użyć:

DECLARE @f varchar(50) = '12/31/18'
SELECT FORMAT(CAST(@f AS DATETIME), N'MMMM dd, yyyy')

WYNIK:

December 31, 2018

I twój drugi wariant:

DECLARE @f varchar(50) = '12/31/2018'
SELECT FORMAT(CAST(@f AS DATETIME), N'MMMM dd, yyyy')

WYNIK:

December 31, 2018
6
StepUp 28 luty 2019, 07:26

Możesz również wypróbować następujące zapytanie

create table DateValue (DateVal varchar(10))
insert into DateValue values
('12/31/18'),
('12/31/2018'),
('01/31/18'),
('01/31/2018')

Select 
    DateName( month , DateAdd( month , DATEPART(MONTH, DateVal) , 0 ) - 1 ) + ' ' +
    Cast(DATEPART(dd, DateVal) as Varchar)  + ', ' +
    + Cast (DATEPART(YYYY, DateVal) as Varchar) as VarcharDate
from DateValue

Wyjście będzie jak pokazano poniżej.

VarcharDate
----------------
December 31, 2018
December 31, 2018
January 31, 2018
January 31, 2018

Ta zapytanie będzie działać również w dolnej wersji SQL Server, gdzie format() nie jest dostępny.

Live Demo

2
Suraj Kumar 28 luty 2019, 07:29