Autor Tema: [Resuelto][Ayuda] [SQL SELECT] en campo datetime  (Leído 11479 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Darkness

  • The Communiter-
  • *
  • Mensajes: 2147
  • The Darkness
    • Diseño y Programaciòn Web Profesional
[Resuelto][Ayuda] [SQL SELECT] en campo datetime
« : abril 14, 2009, 11:45:23 am »
Bueno pues aca vengo solicitando ayuda....
gracias de antemano


Tengo una tabla en MSSQL 2005 la cual contiene datos como estos

documento                   fecha                     monto
_____________________________________________

fac0001                   14/04/2009  15:58:45     $$$$
fac0002                   13/04/2009  13:58:45     $$$$
fac0003                   14/04/2009  15:58:45     $$$$
fac0004                   15/04/2009  16:58:45     $$$$
fac0005                   15/04/2009  14:58:45     $$$$
fac0006                   15/04/2009  09:58:45     $$$$
fac0007                   16/04/2009  07:58:45     $$$$
fac0008                   16/04/2009  06:58:45     $$$$


el punto es que quiero obtener documentos hechos de las 13:00:00 en adelante, cuando es de un solo dia lo hago asi:

Citar
FECHA >= '''14/04/2009  13:00:00'''
   and FECHA <= '''14/04/2009  17:00:00''


la cuestion es:

cuando la consulta es de un solo dia no hay problema, pero por ejemplo si necesito sacar todo el mes cuales fueron los documentos generados despues de las 13:00:00, ya no me es funcional este metodo...

como puedo desglosar para obtener la hora de este campo o como hago el query que me seleccione solo los registros que necesito.
« Última Modificación: abril 14, 2009, 02:00:15 pm por Darkness »
La Muerte Simplemente es el Despertar de Un Sueño Lleno de Falsedades e hipocrecias.
"Larga Vida Al Heavy Metal"

Iron Maiden Discografia DD

Desconectado vlad

  • Global Moderator
  • The Communiter-
  • *
  • Mensajes: 6351
    • Qualium.net
Re: [Ayuda] [SQL SELECT] en campo datetime
« Respuesta #1 : abril 14, 2009, 12:08:25 pm »
SELECT * FROM tabla WHERE HOUR(fecha) >=13 AND MONTH(fecha) = 1

Eso digamos seria para sacar todos los que esten despues de la 1:00p.m en Enero.

PD: Eso lo probé en MySQL, no se si funcionara bien en MSSQL :S

Desconectado Darkness

  • The Communiter-
  • *
  • Mensajes: 2147
  • The Darkness
    • Diseño y Programaciòn Web Profesional
Re: [Ayuda] [SQL SELECT] en campo datetime
« Respuesta #2 : abril 14, 2009, 12:18:06 pm »
SELECT * FROM tabla WHERE HOUR(fecha) >=13 AND MONTH(fecha) = 1

Eso digamos seria para sacar todos los que esten despues de la 1:00p.m en Enero.

PD: Eso lo probé en MySQL, no se si funcionara bien en MSSQL :S

Ok. testing...
La Muerte Simplemente es el Despertar de Un Sueño Lleno de Falsedades e hipocrecias.
"Larga Vida Al Heavy Metal"

Iron Maiden Discografia DD

Desconectado Camus de Acuario

  • The Communiter-
  • *
  • Mensajes: 8455
  • Ōrora Ekusukyūshon!
Re: [Ayuda] [SQL SELECT] en campo datetime
« Respuesta #3 : abril 14, 2009, 12:23:39 pm »
podrias hacerlo asi:

Código: [Seleccionar]
select *
   from tabla
 where fecha between '01/03/2009' and '31/03/2009'
    and to_char(fecha,'hh24') >= 13
probado en oracle, te recomiendo usar este codigo si quieres ingresar fechas que no caen exactamente en principio y fin de un mes, puede ser entre dia 7 y dia 10 de un mismo mes, o entre dias de meses distintos

ahora por si queres para que sea entre el primer y ultimo dia de un mes, pasandole solamente el mes como parametro seria asi:

Código: [Seleccionar]
select *
   from tabla
 where fecha between trunc(to_date('02/2009','MM/RRRR')) and last_day(to_date('02/2009','MM/RRRR'))
    and to_char(fecha,'hh24') >= 13
otra vez, probado en oracle, desconozco si la funcion last_day esta en sqlserver, o si la funcion trunc funciona de la misma forma

Desconectado Darkness

  • The Communiter-
  • *
  • Mensajes: 2147
  • The Darkness
    • Diseño y Programaciòn Web Profesional
Re: [Ayuda] [SQL SELECT] en campo datetime [Resuelto]
« Respuesta #4 : abril 14, 2009, 01:48:51 pm »
Uso un procedimiento almacenado....

me quedo asi....

Citar
WHERE
FECHA >= '''+@FechaInicioArmanda+'''
   and FCH_HORA_CREACION <= '''+@FechaFinArmada+'''
   and DATEPART(hour, FECHA)>= '''+@HoraInicio+'''
   and DATEPART(hour, FECHA)<= '''+@HoraFin+'''
   and DATEPART(minute, FECHA)>= '''+@minutoInicio+'''
   andDATEPART(minute, FECHA)<= '''+@minutoFin+'''   


Gracias....
« Última Modificación: abril 14, 2009, 02:01:26 pm por Darkness »
La Muerte Simplemente es el Despertar de Un Sueño Lleno de Falsedades e hipocrecias.
"Larga Vida Al Heavy Metal"

Iron Maiden Discografia DD

freezer27

  • Visitante
Re:[Resuelto][Ayuda] [SQL SELECT] en campo datetime
« Respuesta #5 : abril 28, 2010, 08:35:35 am »
ahora por si queres para que sea entre el primer y ultimo dia de un mes, pasandole solamente el mes como parametro seria asi:

Código: [Seleccionar]
select *
   from tabla
 where fecha between trunc(to_date('02/2009','MM/RRRR')) and last_day(to_date('02/2009','MM/RRRR'))
    and to_char(fecha,'hh24') >= 13
otra vez, probado en oracle, desconozco si la funcion last_day esta en sqlserver, o si la funcion trunc funciona de la misma forma

Es exactamente lo mismo que iba a postear yo, jeje