Ho una query in sql, devo ottenere la data in un formato di dd/mmm/yy
Esempio: 25/jun/2013
.
Come posso convertirlo per il server SQL?
Non sono sicuro che esista una corrispondenza esatta per il formato che desideri. Ma puoi avvicinarti con convert()
e style 106
. Quindi, sostituisci gli spazi:
SELECT replace(convert(NVARCHAR, getdate(), 106), ' ', '/')
Ci sono già più risposte e tipi di formattazione per SQL server 2008. Ma questo metodo è alquanto ambiguo e sarebbe difficile per te ricordare il numero rispetto al formato di data specifico. Ecco perché nelle prossime versioni di SQL Server c'è un'opzione migliore.
FORMAT ( value, format [, culture ] )
Con l'opzione cultura, puoi specificare la data secondo i tuoi spettatori.
DECLARE @d DATETIME = '10/01/2011';
SELECT FORMAT ( @d, 'd', 'en-US' ) AS 'US English Result'
,FORMAT ( @d, 'd', 'en-gb' ) AS 'Great Britain English Result'
,FORMAT ( @d, 'd', 'de-de' ) AS 'German Result'
,FORMAT ( @d, 'd', 'zh-cn' ) AS 'Simplified Chinese (PRC) Result';
SELECT FORMAT ( @d, 'D', 'en-US' ) AS 'US English Result'
,FORMAT ( @d, 'D', 'en-gb' ) AS 'Great Britain English Result'
,FORMAT ( @d, 'D', 'de-de' ) AS 'German Result'
,FORMAT ( @d, 'D', 'zh-cn' ) AS 'Chinese (Simplified PRC) Result';
US English Result Great Britain English Result German Result Simplified Chinese (PRC) Result
---------------- ----------------------------- ------------- -------------------------------------
10/1/2011 01/10/2011 01.10.2011 2011/10/1
US English Result Great Britain English Result German Result Chinese (Simplified PRC) Result
---------------------------- ----------------------------- ----------------------------- ---------------------------------------
Saturday, October 01, 2011 01 October 2011 Samstag, 1. Oktober 2011 2011年10月1日
Per la soluzione di OP, possiamo usare il seguente formato, che è già menzionato da @ Martin Smith:
FORMAT(GETDATE(), 'dd/MMM/yyyy', 'en-us')
Alcuni formati di data di esempio:
Se si desidera più formati di data del server SQL, è necessario visitare:
possiamo convertire la data in molti formati come
SELECT convert(varchar, getdate(), 106)
Questo restituisce dd mon yyyy
Più qui Questo potrebbe aiutarti
La risposta accettata fornisce già la migliore soluzione utilizzando i metodi di formattazione incorporati nel 2008.
Va notato che i risultati restituiti dipendono comunque dalla lingua di accesso.
SET language Russian
SELECT replace(CONVERT(NVARCHAR, getdate(), 106), ' ', '/')
Ritorna
06/апр/2015
al momento della scrittura.
Per le persone che si imbattono in questa domanda su versioni più recenti di SQL Server un metodo che evita questo problema - e la necessità di REPLACE
è
FORMAT(GETDATE(),'dd/MMM/yyyy', 'en-us')
Su 2005+ sarebbe possibile scrivere un UDF CLR che ha accettato un DateTime, Formatting Pattern e Culture per simulare lo stesso.
Prova a utilizzare la query sottostante.
SELECT REPLACE(CONVERT(VARCHAR(11),GETDATE(),6), ' ','/');
Risultato: 20/Jun/13
SELECT REPLACE(CONVERT(VARCHAR(11),GETDATE(),106), ' ','/');
Risultato: 20/Giu/2013
Prova questo :
select replace ( convert(varchar,getdate(),106),' ','/')
Prova questo
select convert(varchar,getdate(),100)
il terzo parametro è formato, l'intervallo è da 100
a 114
, ognuno dovrebbe funzionare per te.
Se hai bisogno di una data in dd/mmm/yyyy
usa questo:
replace(convert(char(11),getdate(),113),' ','-')
Sostituisci getdate()
con il nome della colonna. Questo ha funzionato per me.
Chiunque tenti di inserire manualmente la data nella variabile 'date type' del server SQL usa questo formato durante l'immissione:
'yyyy-mm-dd'