La conversione “datetime” a “MonthName GIORNO,ANNO”

Ho un datetime campo e cosa covert a “MonthName GIORNO, ANNO di formato”.

Per esempio, la seguente data:

2013-01-16 00:00:00.000

sarà la conversione a:

January 16,2013

Sto facendo questo con la seguente dichiarazione:

CAST(DATENAME(MONTH,DateTime) AS VARCHAR(12)) + ' ' + CAST(DATEPART(DAY,DateTime) AS VARCHAR(2)) + ','+ CAST(YEAR(DateTime) AS VARCHAR(4))

Come si può vedere sto usando separate, funzione di data per ogni parte del valore datetime e la conversione in stringa per concatenare con le altre parti.

C’è un più chiaro e veloce, utilizzando solo covert/funzione cast?

  • In generale dovreste provare a fare una formattazione più vicino all’utente, come possibile, se questo sta andando a passare attraverso un altro codice, ti consiglio di lasciare come datetime e lasciando che il codice non lo uso (di solito molto meglio) la formattazione della stringa di strutture.
  • Io sono d’accordo che questo serve a dare più libertà al programmatore che consente di gestire il risultato del set di righe di SQL, ma in alcuni casi in cui la produzione è rigorosamente definito preferisco formattare i dati in SQL se possibile e (nel mio caso) per utilizzare javascript/html solo per il rendering.
  • La consulenza nasce da un gran numero di casi in cui (in qualche modo) le persone che hanno deciso che il modo migliore per affrontare “i problemi di formattazione” con datetimes per la conversione di stringhe (e quindi, spesso, convertirli nuovamente i valori datetime successive), senza riconoscere che la “formattazione” problemi sorgono solo quando si inizia il trattamento di dati datetime come stringhe, in primo luogo.
InformationsquelleAutor gotqn | 2013-06-18

 

One Reply
  1. 3

    Come questo:

    select 
    CONVERT(VARCHAR(12), dt, 107) AS [Mon DD, YYYY] 
    from temp

    Di uscita:

    Jan 16, 2013

    Live Demo

    • +1, Grazie, confrontare i piani di esecuzione dal mio tuo e il mio codice. La tua soluzione è più piccolo(due volte) piano nella cache dimensione. Gli altri criteri sono gli stessi, ma è sicuramente più chiaro.

Lascia un commento