Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   MS SQL Server (https://www.clubdelphi.com/foros/forumdisplay.php?f=23)
-   -   consulta entre fecha+hora+min+segundos (https://www.clubdelphi.com/foros/showthread.php?t=80327)

uper 18-09-2012 23:38:35

consulta entre fecha+hora+min+segundos
 
B. tardes a todos, tengo una duda acerca de una consulta entre fecha+hora+min+segundos pues resulta que tengo tabla definida con los campos id char(2),nomarchivo char(20),fecha_inicio date, fecha_final date
en esta tabla se guarda los nombre de los archivos que tiene un vencimiento, ahora necesito hacer una consulta en la cual por medio de la fecha+hora+min+segundos ya sea actual o de cualquier momento me indique cual es el archivo que voy a utilizar:

Tengo los datos asi
Código:

id nomarchivo        fecha_inicio            fecha_final
1  archivo2008.txt  2008-10-12 15:30:54.000 2010-10-12 15:30:55.000
2  archivo2010.txt  2010-10-12 15:30:50.000 2012-10-12 15:30:50.000
3  archivo2012.txt  2012-10-12 15:30:50.000 2014-10-12 15:30:50.000
4  etc ...

por ejemplo si consulto la fecha del dia (2010 09 05 14:22:33) me tendria que salir el id que pertenece al archivo2008.txt, si consulto
la fecha del dia (2010 10 14 09:12:30) me tendria que salir el id que pertenece al archivo2010.txt y asi.
mi consulta es esta
Código SQL [-]
select * from    sellos_inf
where 
    '20100905 14:22:33' >=  fecha_inicio
and '20100905 14:22:33' <= fecha_final

¿cómo le indico que estoy buscando por fecha+hora+min+segundos a sql server 2000?

gracias

olbeup 19-09-2012 10:12:53

En tú SQL no te devolvera nada, ya que nada se cumple.
Código SQL [-]
select * from    sellos_inf
where 
    '20100905 14:22:33' >=  fecha_inicio
and '20100905 14:22:33' <= fecha_final
Cita:

por ejemplo si consulto la fecha del dia (2010 09 05 14:22:33) me tendria que salir el id que pertenece al archivo2008.txt
Eso no es cierto:
Cita:

id nomarchivo fecha_inicio fecha_final
1 archivo2008.txt 2008-10-12 15:30:54.000 2010-10-12 15:30:55.000
Fecha_Inicio >= '05/09/2010 14:22:33' = False ya que este empieza por 12/10/2008 15:30:54

Fecha_Final <= '05/09/2010 14:22:33' = True

Cita:

si consulto la fecha del dia (2010 10 14 09:12:30) me tendria que salir el id que pertenece al archivo2010.txt
Eso no es cierto:
Cita:

id nomarchivo fecha_inicio fecha_final
2 archivo2010.txt 2010-10-12 15:30:50.000 2012-10-12 15:30:50.000
Fecha_Inicio >= '14/10/2010 09:12:30' = False ya que este empieza por 12/10/2010 09:12:30

Fecha_Final <= '12/10/2012 15:30:50' = True


No te devolvera ningún resultado ya que no se cumple en ninguno de los resultados.

Lo que tienes que hacer es, si tiene un vencimiento pues tienes que usar la fecha de finalización
Código SQL [-]
SELECT *
  FROM Sellos_Inf
  WHERE FECHA_FINAL BETWEEN '05/09/2010 14:22:33' AND '12/10/2010 15:30:55'
Esto te devolvera:
Cita:

id nomarchivo fecha_inicio fecha_final
1 archivo2008.txt 2008-10-12 15:30:54.000 2010-10-12 15:30:55.000
Un saludo.

uper 19-09-2012 19:13:37

ok ya entendi buscar por la fecha final pero sin en cambio yo cosulto otra fecha dentro de un rango ya no me da el resultado por ejemplo
Código PHP:

SELECT *
  
FROM Sellos_Inf
  WHERE FECHA_FINAL BETWEEN 
'12/10/2012 15:30:49' AND '12/10/2012 15:30:49' 

la intension es buscar dentro del rango de fecha por que se tiene definido una fecha inicial y final, me falta hacer un convert por usar fecha+hora+min+seg

gracias

olbeup 20-09-2012 09:25:05

Cita:

Empezado por uper (Mensaje 443638)
ok ya entendi buscar por la fecha final pero sin en cambio yo cosulto otra fecha dentro de un rango ya no me da el resultado por ejemplo
Código PHP:

SELECT *
  
FROM Sellos_Inf
  WHERE FECHA_FINAL BETWEEN 
'12/10/2012 15:30:49' AND '12/10/2012 15:30:49' 

la intension es buscar dentro del rango de fecha por que se tiene definido una fecha inicial y final, me falta hacer un convert por usar fecha+hora+min+seg

gracias

No te funciona porque si usas segundos también tienes que usar décimas que deben de oscilar 000 al 999
Código SQL [-]
SELECT *
  FROM Sellos_Inf
  WHERE FECHA_FINAL BETWEEN '12/10/2012 15:30:49.000' AND '12/10/2012 15:30:49.999'

Nunca utiliza un "ID Char(2)" cuando su contenido es numérico, en su defecto utiliza "ID int IDENTITY(1,1)".

Un saludo


La franja horaria es GMT +2. Ahora son las 20:30:16.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi