2013-08-13 9 views
10

Sto utilizzando la funzione CONVERT(data_type(length),expression,style) per modificare il formato di una data in una query SELECT.Come ottenere un formato data particolare ('dd-MMM-yyyy') nella query SELECT SQL Server 2008 R2

Declare @dt nvarchar (20)

Selezionare @dt = Convertire (nvarchar (20), SalesDate, 113) DA SalesTable

Il formato ho bisogno è 'dd-MMM- yyyy '(es. '05 -Jul-2013') ma non sono riuscito a trovare il numero di stile corretto (ad esempio 113) per questo particolare formato. Qualcuno mi può aiutare con quello per favore?

+2

Di solito è meglio fare questa formattazione più vicino all'utente (per esempio nel generatore di report, o in qualsiasi altro codice che stai scrivendo che presenta i risultati all'utente) –

+0

Ok, terrò questo a mente :) @Damien_The_Unbeliever –

risposta

25

Prova questo:

Declare @dt NVARCHAR(20) 

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

Great Answer .. esattamente quello che stavo cercando @Abhishek Jain –

+0

Usa le funzioni di ritaglio se la tua data ha tempo e non vuoi vedere i trattini finali SOSTITUIRE (RTRIM (LTRIM (CONVERT (CHAR (15), SalesDate, 106))), '', '-') –

4

Credo che questo sia il modo migliore per farlo.

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

Perché non si deve usare o varchar(11)varchar(10) che può fare problema in futuro.

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

oppure

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

sia funziona bene

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

O

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

restituirà la data particolare nel formato 'dd-mm-aaaa'

Il risultato sarebbe stato così ..

04-07-2016