2014-10-30 15 views
5

Per convertire un datetime a MM/DD/YYYY, questo funziona:Come formattare datetime come M/D/YYYY in SQL Server?

declare @datetime datetime = '2015-01-01' 
select convert(varchar(10),convert(date,@datetime),101) 

Questo restituisce 01/01/2015. Come posso convertire la data in 1/1/2015?

Niente su http://www.sql-server-helper.com/tips/date-formats.aspx corrisponde al formato M/D/YYYY.

+0

Quale ** versione ** di SQL Server stai usando? SQL Server ** 2012 ** e versioni più recenti hanno una funzione 'FORMAT' - prima, dovresti fare da solo la manipolazione delle stringhe ... –

+5

Ogni volta che vedo questa domanda su StackOverflow, dico la stessa cosa: hai VERAMENTE bisogno per fare questo in SQL? Perché non farlo nella tua interfaccia utente, non c'è quasi mai la necessità di farlo nel database. – DavidG

risposta

8

penso che l'unica possibilità che hai è di fare qualcosa di simile:

DECLARE @datetime DATETIME = '2015-01-01' 

SELECT LTRIM(STR(MONTH(@datetime))) + '/' + 
     LTRIM(STR(DAY(@datetime))) + '/' + 
     STR(YEAR(@datetime), 4) 

Con SQL Server 2012 e, soprattutto, si può fare questo:

SELECT FORMAT(@datetime, 'M/d/yyyy') 
0

Non c'è stile convertito che utilizza giorno o mese a una cifra. Questo potrebbe funzionare, però.

declare @datetime datetime = '2015-01-01' 
select 
    cast(month(@datetime) as varchar(2)) + '/' + 
    cast(day(@datetime) as varchar(2)) + '/' + 
    cast(year(@datetime) as varchar(4)) 
3
DECLARE @datetime DATETIME = '2015-01-01'; 
SELECT STUFF(REPLACE('/' + CONVERT(CHAR(10), @datetime, 101),'/0','/'),1,1,'') 

Questo è come funziona:

  1. prima convertire il DATETIME a char
  2. quindi aggiungere un carattere '/' agli inizi
  3. sostituire tutti i '/ 0' con '/'
  4. Con STUFF, eliminare il primo '/'
+0

Ti preghiamo di aggiungere una spiegazione al tuo codice – chopper

+0

Ho fatto @chopper, grazie per averlo menzionato. – sqluser

Problemi correlati