none
Datetime fecha y hora (de la parte de la HORA solo hora y minutos) RRS feed

  • Pregunta

  • Buenas,

    Tengo una tabla con campo datetime que se llama fecha y me gustaria hacer una select buscando con la fecha y hora pero de la parte de la hora solo quiero hora y minuto , es decir quiero buscar los registros donde la fecha sea "2017-03-25" de la hora "22:05"

    He estado probando algo como esto pero sin éxito

    SELECT * from ArticulosHistoricoPrecios WHERE fecha in ({ts '2017-03-25 22:05'})
      
    
    

    Gracias

    lunes, 27 de marzo de 2017 18:12

Respuestas

Todas las respuestas

  • Saludos:

    Seria algo asi:

    SELECT * from ArticulosHistoricoPrecios 
    WHERE fecha between '2017-03-25 22:05' and '2017-03-25 22:06'

    Espero ayude.

    JOSE LUIS


    Dios NO los llamo LAS DIEZ RECOMENDACIONES

    lunes, 27 de marzo de 2017 18:23
  • Podrías hacer esto:

    SELECT * from ArticulosHistoricoPrecios WHERE datepart(hh, fecha)=22  AND datepart(Mi, fecha)=05

    Evidentemente puedes usar el mismo truco para condicionar también otras partes de las fecha si es que lo necesitas.

    Las distintas partes de fecha que admite la función DatePart puedes verlas aquí:

    https://msdn.microsoft.com/es-es/library/ms174420.aspx

    • Marcado como respuesta golfgti6 lunes, 27 de marzo de 2017 20:33
    lunes, 27 de marzo de 2017 18:25
  • Saludos:

    Seria algo asi:

    SELECT * from ArticulosHistoricoPrecios 
    WHERE fecha between '2017-03-25 22:05' and '2017-03-25 22:06'

    Espero ayude.

    JOSE LUIS


    Dios NO los llamo LAS DIEZ RECOMENDACIONES

    Sigo mirando la consulta propuesta , supongo que faltará algo porque me da este error

    Mens. 242, Nivel 16, Estado 3, Línea 3
    La conversión del tipo de datos varchar en datetime produjo un valor fuera de intervalo.
    

    Gracias

    lunes, 27 de marzo de 2017 18:26
  • Hola golfgti6,

    Otra forma sería :

    SELECT * 
    FROM ArticulosHistoricoPrecios
    WHERE CONVERT(CHAR(16), fecha, 121) = '2017-03-25 22:05'

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    lunes, 27 de marzo de 2017 18:53

  • Sigo mirando la consulta propuesta , supongo que faltará algo porque me da este error

    Mens. 242, Nivel 16, Estado 3, Línea 3
    La conversión del tipo de datos varchar en datetime produjo un valor fuera de intervalo.

    Gracias

    El error que obtienes se produce porque la cadena con representación de fecha no tiene un formato válido a ojos del servidor, por ejemplo, es de presumir que el valor 25 se intenta convertir a un ordinal de mes, y claro, al intentar la conversión el valor de mes está fuera de intervalo. En tal sentido se recomienda escribir literales de fecha bajo un formato que sea independiente al idioma del servidor, por ejemplo: '20170325 22:05'

    DECLARE @Fecha datetime = '20170325 22:05';
    
    SELECT * FROM ArticulosHistoricoPrecios a 
    WHERE a.fecha >= @Fecha AND a.fecha < DATEADD(MINUTE, 1, @Fecha)

    Cuidado con el uso del operador BETWEEN, ya que es inclusivo respecto a los valores de ámbito.


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    lunes, 27 de marzo de 2017 19:57
  • Puedes Usar

    Select * from ArticulosHistoricoPrecios WHERE fecha like '2017-03-25 22:05%';

    Con esto te muestra todo aquello que en fecha comience con: 2017-03-25 22:05

    lunes, 27 de marzo de 2017 20:32
  • Podrías hacer esto:

    SELECT * from ArticulosHistoricoPrecios WHERE datepart(hh, fecha)=22  AND datepart(Mi, fecha)=05

    Evidentemente puedes usar el mismo truco para condicionar también otras partes de las fecha si es que lo necesitas.

    Las distintas partes de fecha que admite la función DatePart puedes verlas aquí:

    https://msdn.microsoft.com/es-es/library/ms174420.aspx

    Gracias , al final he usado este método.


    lunes, 27 de marzo de 2017 20:33