2013-08-13 10 views
10

Ich verwende CONVERT(data_type(length),expression,style) Funktion, um das Format eines Datums in einer SELECT-Abfrage zu ändern.So erhalten Sie ein bestimmtes Datumsformat ('dd-MMM-yyyy') in SELECT-Abfrage SQL Server 2008 R2

Declare @dt nvarchar (20)

Select @dt = Convert (nvarchar (20), Salesdate, 113) FROM SalesTable

Das Format ich brauche, ist ‚dd-MMM JJJJ '(z. B. '05 -Jul-2013'), aber ich konnte die richtige Stilnummer (z. B. 113) für dieses spezielle Format nicht finden. Kann mir bitte jemand dabei helfen?

+2

wäre Es ist in der Regel besser, diese Formatierung näher (an den Benutzer zu tun, zum Beispiel im Berichtgenerator, oder in was auch immerem anderem Code, den du schreibst, der dem Benutzer die Ergebnisse präsentiert) –

+0

Ok, ich behalte das im Gedächtnis :) @Damien_The_Unbeliever –

Antwort

25

Try this:

Declare @dt NVARCHAR(20) 

Select 
    @dt = REPLACE(CONVERT(CHAR(15), SalesDate, 106),' ',' - ') 
FROM SalesTable 
+0

Große Antwort..exactly, was ich @Abhishek Jain –

+0

suchte Verwenden Sie Trimm-Funktionen, wenn Ihr Datum Zeit hat und Sie die nachfolgenden Bindestriche nicht sehen möchten REPLACE (RTRIM (LTRIM (CONVERT (CHAR (15), SalesDate, 106))), '', '-') –

4

Ich denke, dies ist der beste Weg, es zu tun.

REPLACE(CONVERT(NVARCHAR,CAST(WeekEnding AS DATETIME), 106), ' ', '-') 

Weil Sie müssen nicht varchar(11) oder varchar(10) verwenden, das Problem in Zukunft machen.

6
select CONVERT(NVARCHAR, SYSDATETIME(), 106) AS [DD-MON-YYYY] 

oder sonst

select REPLACE(CONVERT(NVARCHAR,GETDATE(), 106), ' ', '-') 

beide funktionieren

0
SELECT Convert(varchar(10),CONVERT(date,'columnname',105),105) as "end"; 

ODER

SELECT CONVERT(VARCHAR(10), CAST(event_enddate AS DATE), 105) AS [end]; 

das besondere Datum im Format von 'dd-mm-yyyy' zurückkehren

Das Ergebnis wie folgt aus ..

04-07-2016