SQL Server ha una funzione Date_Format?


8

Tutto quello che ho trovato è un elenco di predefiniti DateFormatche posso scegliere, in questo modo

Come ricordo in MySQL (e anche PostgeSQL?) Puoi definire il tuo formato data:

DATE_FORMAT(now(),'&m_%Y') --for 02_2012 etc.

SQL Server ha la stessa cosa? Vedo che le persone devono scrivere una funzione per fare una cosa del genere, ne ha una incorporata?


MODIFICARE:

Ho appena trovato la DatePartfunzione. Può richiedere il mese come numero, ma restituisce sempre 1 cifra, anche se lo uso datePart(MM, getdate())



1
In genere, la formattazione dovrebbe essere gestita dal client, non dal database. Detto questo, se è necessario formattare l'output del database, Martin Smith ha già fornito opzioni.
JSR

Risposte:


16

Non ancora.

Devi usare CONVERTun parametro di stile o hackerare qualcosa insieme a DATEPARTo DATENAME.

SQL Server 2012 avrà la FORMATfunzione che accetta una stringa di formato .NET Framework

Sintassi:

FORMAT ( value, format [, culture ] )

Esempio di utilizzo

SELECT FORMAT(getdate(), 'dd/MM/yyyy', 'en-US' ) 

Puoi sempre utilizzare l'integrazione CLR e creare il tuo UDF che fa la stessa cosa per il 2005 o il 2008.


Ahhh, 2012! Oh bene, immagino che scriverò un UDF come hai detto tu. Grazie
King Chan,

Sarà fantastico.
Gordon Bell,

1
@KingChan e Martin: per quanto riguarda l'uso di SQLCLR per realizzare ciò in SQL Server 2005/2008/2008 R2, c'è sempre la possibilità di scaricare la versione gratuita di SQL # (di cui sono l'autore, ma Date_Format è gratuita) e quindi non è necessario eseguire alcuna codifica. Ho alcuni esempi di entrambi SQL#.Date_Formate il built-in FORMATin questa risposta SO: c'è un modo per ottenere date con formati personalizzati in SQL Server? :-)
Solomon Rutzky

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.