none
formato fecha en SQL RRS feed

  • Pregunta

  • hola alguien podría ayudarme crear una consulta en sql que al mostrar la fecha, me la muestre de la siguiente manera;

    OCTUBRE 2016

    que muestre solo mes y año 

    select fechaIngreso from remTrabajadores

    si tengo esa consulta anterior me muestra la fecha así;

    2013-11-04

    pero necesito que muestre mes y año ;

    Octubre 2016

    Gracias.

    lunes, 24 de octubre de 2016 13:29

Respuestas

  • Otra opción es usar la función datename, pero el nombre del mes que devuelva depende del idioma actual de la sesión en SQL Server que se puede cambiar con SET LANGUAGE:

    SET LANGUAGE 'spanish'
    SELECT DATENAME(month, T.fechaIngreso) + ' ' + CONVERT(varchar,YEAR(T.fechaIngreso)) as FechaIngreso
    FROM
    	remTrabajadores T

    • Marcado como respuesta DaviBar lunes, 24 de octubre de 2016 19:53
    lunes, 24 de octubre de 2016 13:58

Todas las respuestas

  • Prueba con esto:

    WITH M AS (
    SELECT 
    	T.monthname, T.monthnumber
    FROM 
    	(VALUES 
    		('Enero', 1),
    		('Febrero', 2),
    		('Marzo', 3),
    		('Abril', 4),
    		('Mayo', 5),
    		('Junio', 6),
    		('Julio', 7),
    		('Agosto', 8),
    		('Septiembre', 9),
    		('Octubre', 10),
    		('Noviembre', 11),
    		('Diciembre', 12)
    	) T(monthname, monthnumber)
    )
    SELECT M.monthname + ' ' + CONVERT(varchar,YEAR(T.fechaIngreso)) as FechaIngreso
    FROM
    	remTrabadores T
    	LEFT OUTER JOIN M ON MONTH(T.fechaIngreso) = M.monthnumber

    Esta consulta hace uso de Table Value Constructor y de Common Table Expressions

    lunes, 24 de octubre de 2016 13:50
  • Otra opción es usar la función datename, pero el nombre del mes que devuelva depende del idioma actual de la sesión en SQL Server que se puede cambiar con SET LANGUAGE:

    SET LANGUAGE 'spanish'
    SELECT DATENAME(month, T.fechaIngreso) + ' ' + CONVERT(varchar,YEAR(T.fechaIngreso)) as FechaIngreso
    FROM
    	remTrabajadores T

    • Marcado como respuesta DaviBar lunes, 24 de octubre de 2016 19:53
    lunes, 24 de octubre de 2016 13:58
  • SELECT TO_CHAR(fechaIngreso ,'MONTHYYYY') AS "fechaIngreso" FROM remTrabajadores


    Patrick Aullas Analista Programador Saludos!...

    lunes, 24 de octubre de 2016 15:17
  • DaviBar.

    Si ocupas la versión 2012 o superior de SQL Server podrías usar la función FORMAT():

    /*Prueba*/
    DECLARE @Fecha date = '20131104';
    SELECT UPPER(FORMAT(@Fecha, 'MMMM yyyy', 'es-ES'));
    /*Resultado: NOVIEMBRE 2013*/
    
    /*Consulta*/
    SELECT UPPER(FORMAT(fechaIngreso, 'MMMM yyyy', 'es-ES')) FROM remTrabajadores;


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    lunes, 24 de octubre de 2016 15:35
  • Cual version de SQL Server usas?

    En la version 2012 en adelante cuentas con la funcion FORMAT, la cual no solo acepta una cadena de formato sino tambien el lenguaje a usar (language culture). Esto permite que el resultado sea concistente y no dependa de el lenguaje en uso.

    DECLARE @d date = CURRENT_TIMESTAMP;  
    SELECT UPPER(FORMAT ( @d, 'MMMM yyyy', 'es-EC' )) AS col1;
    GO

    https://msdn.microsoft.com/en-us/library/ee825488(v=cs.20).aspx

    Te advierto que esta funcion puede afectar el rendimiento de la consulta si el numero de filas retornados es significante.

    Otra opcion es usar la funcion DATENAME y YEAR para extraer y concatenar el nombre del mes y año. Ten en cuenta que el resultado de DATENAME depende del lenguaje en uso.


    AMB

    Some guidelines for posting questions...

    AYÚDANOS A AYUDARTE, guía básica de consejos para formular preguntas




    lunes, 24 de octubre de 2016 15:43
  • me sirvió muchas gracias 
    lunes, 24 de octubre de 2016 19:54