none
Como el mes anterior de una tabla RRS feed

  • Pregunta

  • Hola como estan 

     tengo esta consulta : select convert(varchar(12), DATEADD(mm, +2, getdate()), 106)  AS 'Mes anterior'

    y tengo el mes anterio del sistemas(Windows)

    como hago para  obtener el mes anterio  pero de una tabla 

    select * from Bateria

    viernes, 12 de mayo de 2017 17:11

Respuestas

  • ¡Ahí está! tiene que ver con el tipo date. Has el siguiente cambio:

    SET LANGUAGE Spanish;
    SELECT CONVERT(varchar(15), DATEADD(MONTH, -1, CONVERT(datetime, fecha_comp)), 106) 
    FROM Bateria AS b

    También pudiste haber utilizado la función FORMAT() tal como te propongo en el aporte anterior.


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    viernes, 12 de mayo de 2017 20:14

Todas las respuestas

  • La consulta que adjuntas no recupera la fecha un mes anterior sino que retorna la fecha posterior a hoy dos meses.

    Entiendo que la tabla [Bateria] debe tener alguna columna como [Fecha], basta con definir una expresión con rangos de tiempo, por ejemplo:

    SELECT * FROM Bateria
    WHERE Fecha >= CONVERT(date, DATEADD(MONTH, -1, GETDATE())) AND CONVERT(date, GETDATE())
    GO


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    viernes, 12 de mayo de 2017 17:24
  • gracias bro y para Pasar el mes a de ingles a español?

    viernes, 12 de mayo de 2017 17:37
  • Debes especificar el entorno de idioma para la sesión actual, por ejemplo:

    SET LANGUAGE us_english;
    GO
    SELECT DATENAME(MONTH, GETDATE())
    --Resultado: May
    
    SET LANGUAGE Spanish;
    GO
    SELECT DATENAME(MONTH, GETDATE())
    --Resultado: Mayo

    Si la versión del motor de base de datos que ocupas te permite la función FORMAT() podría hacerlo de manera directa bajo un formato y cultura, por ejemplo:

    SELECT FORMAT(GETDATE(), 'MMMM', 'en-US')
    --Resultado: May


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    viernes, 12 de mayo de 2017 17:57
  • bro este es mi consulta 

    SELECT convert (varchar (15),DATEADD (mm,-1 ,fecha_comp),106) FROM Bateria AS b

    pero me da como resulta el mes en ingles

    aunque le ponga 

    SET LANGUAGE Spanish;
    SET dateformat dmy

    siempre me da el mes en ingles

    resultado de la consulta 10 jan 2017

    viernes, 12 de mayo de 2017 19:30
  • Hola,

    Lo estás ejecutando así?

    set language Spanish
    SELECT convert (varchar (15),DATEADD (mm,-1 ,fecha_comp),106) FROM Bateria AS b
    Saludos


    Si ayudé a resolver tu consulta, no olvides marcar como respuesta y/o votar como útil.

    viernes, 12 de mayo de 2017 19:44
  • si pero siempre me sale el mes en ingles

    viernes, 12 de mayo de 2017 19:45
  • No veo porque no ha de funcionar, tengo los siguientes ejemplos en tres idiomas con los resultados esperados:

    SET LANGUAGE us_english;
    SELECT CONVERT(VARCHAR(12), DATEADD (mm, -1, GETDATE()), 106);
    --Resultado: 12 Apr 2017
    
    SET LANGUAGE French;
    SELECT CONVERT(VARCHAR(12), DATEADD (mm, -1, GETDATE()), 106);
    --Resultado: 12 avr 2017
    
    SET LANGUAGE Spanish;
    SELECT CONVERT(VARCHAR(12), DATEADD (mm, -1, GETDATE()), 106);
    --Resultado: 12 Abr 2017

    Si ocupas la versión 2012 o superior del motor de base de datos de SQL Server puedes utilizar la función FORMAT():

    SELECT FORMAT(DATEADD(mm, -1, GETDATE()), 'dd MMM yyyy', 'es-ES')
    --Resultado: 12 abr. 2017


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    viernes, 12 de mayo de 2017 19:49
  • eso me funciona pero no me agarra la fecha que estoy usando si no  la del sistema osea la fecha de mi tabla

    esta mi consulta

    SELECT convert (varchar (15),DATEADD (mm,-1 ,fecha_comp),106) FROM Bateria AS b




    viernes, 12 de mayo de 2017 19:55
  • Vamos! es sólo un ejemplo con datos que podemos utilizar y demostrar, lógicamente debes cambiar por la columna de base de datos que tienes, la idea fue demostrar que funciona configurando un idioma distinto.

    ¿Qué tipo de dato es la columna [fecha_comp]?

    ¿Qué versión de SQL Server ocupas?

    Te agradeceré respondas las preguntas que se te formulan.

    viernes, 12 de mayo de 2017 20:03
  • ¿Qué tipo de dato es la columna [fecha_comp]?

    date

    ¿Qué versión de SQL Server ocupas?

    SQL 2012

    viernes, 12 de mayo de 2017 20:05
  • ¡Ahí está! tiene que ver con el tipo date. Has el siguiente cambio:

    SET LANGUAGE Spanish;
    SELECT CONVERT(varchar(15), DATEADD(MONTH, -1, CONVERT(datetime, fecha_comp)), 106) 
    FROM Bateria AS b

    También pudiste haber utilizado la función FORMAT() tal como te propongo en el aporte anterior.


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    viernes, 12 de mayo de 2017 20:14
  • Entonces es por el tipo date, deberías castearla y con ello conseguir lo del idioma

    set language Spanish
    SELECT convert(varchar (15),DATEADD (mm,-1 ,cast(fecha_comp as datetime)),106)
    


    Si ayudé a resolver tu consulta, no olvides marcar como respuesta y/o votar como útil.

    viernes, 12 de mayo de 2017 20:18