Sv Community El Salvador

Soporte y Tecnología => Programación => Base de Datos => Mensaje iniciado por: Darkness en abril 14, 2009, 11:45:23 am

Título: [Resuelto][Ayuda] [SQL SELECT] en campo datetime
Publicado por: Darkness en 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.
Título: Re: [Ayuda] [SQL SELECT] en campo datetime
Publicado por: vlad en 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
Título: Re: [Ayuda] [SQL SELECT] en campo datetime
Publicado por: Darkness en 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...
Título: Re: [Ayuda] [SQL SELECT] en campo datetime
Publicado por: Camus de Acuario en 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
Título: Re: [Ayuda] [SQL SELECT] en campo datetime [Resuelto]
Publicado por: Darkness en 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....
Título: Re:[Resuelto][Ayuda] [SQL SELECT] en campo datetime
Publicado por: freezer27 en 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