none
Formato fecha sql RRS feed

  • Pregunta

  • Saludos, tengo una columna de tipo datetime en mi tabla sql server, quisiera saber si existe alguna manera de mostrar el siguiente formato con sql server ejemplo;

    Martes, 23 de Agosto del 2011, 15:00

    En lugar de;

     

    23/08/2011 15:00:00

     

    martes, 23 de agosto de 2011 16:25

Respuestas

  • Sí, pero como siempre comento en estos casos, creo que lo ideal es hacerlo desde la aplicación cliente, que sea ella la que se encargue de formatear los valores que le pasa SQL Server.

    En cualquier caso, echa un vistazo al siguiente script:

     

    SET DATEFORMAT dmy
    SET LANGUAGE spanish
    
    DECLARE @f DATETIME
    SET @f = '23/08/2011 15:00:00'
    
    SELECT DATENAME(dw, @f) +', ' + CAST(DAY(@f) AS VARCHAR(10)) + ' de ' 
    + DATENAME(M, @f) + ' del ' + CAST(YEAR(@f) AS VARCHAR(10)) + ', '
    + CONVERT(CHAR(5), @f, 108) AS [fecha formateada]


     


    martes, 23 de agosto de 2011 16:32

Todas las respuestas

  • Sí, pero como siempre comento en estos casos, creo que lo ideal es hacerlo desde la aplicación cliente, que sea ella la que se encargue de formatear los valores que le pasa SQL Server.

    En cualquier caso, echa un vistazo al siguiente script:

     

    SET DATEFORMAT dmy
    SET LANGUAGE spanish
    
    DECLARE @f DATETIME
    SET @f = '23/08/2011 15:00:00'
    
    SELECT DATENAME(dw, @f) +', ' + CAST(DAY(@f) AS VARCHAR(10)) + ' de ' 
    + DATENAME(M, @f) + ' del ' + CAST(YEAR(@f) AS VARCHAR(10)) + ', '
    + CONVERT(CHAR(5), @f, 108) AS [fecha formateada]


     


    martes, 23 de agosto de 2011 16:32
  • Me temo que no hay un método "rápido y directo" de hacer la conversión en SQL Server. La función CONVERT tiene varios especificadores de formato, pero ninguno concuerda exactamente con el formato que deseas.

    Típicamente estas conversiones suelen ser mucho más fáciles si se realizan en el lado cliente. Por ejemplo, en .Net puede aplicarse una especificación de formato tal como "dddd, dd de MMMM del yyyy, hh:mm". Bastaría aplicar una conversión de este tipo mediante String.Format en tu Capa de Acceso a Datos para que todo el programa los reciba en este formato. ¿Qué clase de entorno estás usando para conectarte al SQL Server?

    Si no tienes más remedio que hacerlo en el lado servidor, puedes escribir una función que genere ese formato usando DATEPART, concatenación de cadenas, y CASE para proveer los nombres de los meses y días de la semana. Pero no va a quedar muy simple que digamos.

     Editado: Perdón, mientras tecleaba la respuesta, Carlos Sacristán ha escrito prácticamente lo mismo que yo decía. Se puede borrar este mensaje si el moderador lo considera oportuno.


    martes, 23 de agosto de 2011 16:36