risposta-alla-domanda-sullo-sviluppo-web-bd.com

Convertire il formato della data nel formato GG/MMM/AAAA in SQL Server

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?

54
Krish KvR

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), ' ', '/')
61

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.

Se stai usando SQL Server 2012 o versioni successive, dovresti usare la funzione Format ()

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:

 enter image description here

Se si desidera più formati di data del server SQL, è necessario visitare:

  1. Formato data e ora personalizzato
  2. Formato standard di data e ora
43
Somnath Muluk

possiamo convertire la data in molti formati come

SELECT convert(varchar, getdate(), 106)

Questo restituisce dd mon yyyy 

Più qui Questo potrebbe aiutarti

30
Nithesh

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.

9
Martin Smith

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

8
Praveen

Prova questo :

select replace ( convert(varchar,getdate(),106),' ','/')
1
KD29

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.

1
Chethan

Chiunque tenti di inserire manualmente la data nella variabile 'date type' del server SQL usa questo formato durante l'immissione: 

'yyyy-mm-dd' 

0
IteratioN7T