2012-05-30 19 views
5

Siento que esto debe ser una solución sencilla pero estoy teniendo problemas para encontrar cualquier cosa en él ...¿Cómo puedo formatear una fecha y hora para varchar con el formato dd-MMM-aaaa?

Por lo tanto: ¿Cómo llego desde un datetime a un varchar con el formato dd-mmm-aaaa?

Eg: my_date --> '29-May-2012' 

El cierre Me las he arreglado para venir es

convert(varchar(20),my_date,105) --> '29-05-2012' 

Sí, necesito hacer esto bien en T-SQL.

Respuesta

11

apuesto a que no puede esperar a que SQL Server 2012 (aún podría ser una respuesta válida para otros lectores):

SELECT FORMAT(GETDATE(), 'dd-MMM-yyyy'); 

Mientras tanto, este formato no es compatible nativamente, pero a partir del http://databases.aspfaq.com/database/what-are-the-valid-styles-for-converting-datetime-to-string.html, el más cercano es probablemente:

SELECT REPLACE(CONVERT(CHAR(11), GETDATE(), 106), ' ', '-'); 
+0

106! Bastante simple, gracias. Aceptando esta respuesta para el 'futuro-proofing'. :) –

3

que puede usar:

SELECT replace(convert(char(11), getdate(), 113), ' ', '-') 

o

SELECT replace(convert(char(11), getdate(), 106), ' ', '-') 
+1

¿por qué 'varchar (20)'? ¿por qué incluso 'varchar'? el formato es de longitud fija. –

+0

@KM. actualicé mi respuesta, acabo de lanzar una longitud cuando inicialmente lo escribí – Taryn

+0

Creo que solo se estaba haciendo eco del OP. Probablemente usaría char (11) para ser explícito. Pero, tal vez la intención era poblar una columna varchar (20). – GilM

Cuestiones relacionadas