Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo Hace 2 Semanas
Unkger Unkger is offline
Miembro
 
Registrado: ago 2017
Posts: 11
Poder: 0
Unkger Va por buen camino
Question Consulta de fechas tipo date con BETWEEN

Hola, tengo una base de datos con lo siguiente:

Código SQL [-]
create table pagos(
fecha date
)

Código SQL [-]
insert into pagos values('2017-01-08')
insert into pagos values('2017-11-08')
insert into pagos values('2016-05-08')
insert into pagos values('2017-03-09')

Quiero hacer una consulta que me muestre las fechas desde el '2017-01-08' hasta '2017-11-08'
He hecho esto:

Código SQL [-]
declare @FechaInicio as date ='2017/01/08'
declare @FechaFin as date ='2017/11/08'
select fecha from pagos where fecha between @FechaInicial AND @FechaFin

Pero me muestra el mes 09 y solo lo quiero del 08

Código SQL [-]
2017-01-08
2017-11-08
2017-03-09

¿Alguna forma?
Responder Con Cita
  #2  
Antiguo Hace 2 Semanas
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 9.795
Poder: 27
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

No se con que RDBMS estas trabajando, pareciera MySQL y no lo he usado, pero supongo que podrías intentar algo similar a esto:
Código SQL [-]
SELECT FECHA
FROM PAGOS
WHERE EXTRACT(MONTH FROM FECHA) > @FECHAINICIO
  AND EXTRACT(MONTH FROM FECHA) < @FECHAFIN

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo Hace 2 Semanas
Avatar de lbidi
lbidi lbidi is offline
Miembro
 
Registrado: oct 2003
Ubicación: Montevideo- URUGUAY
Posts: 359
Poder: 15
lbidi Va por buen camino
Cita:
Empezado por Unkger Ver Mensaje
Hola, tengo una base de datos con lo siguiente:

Código SQL [-]
create table pagos(
fecha date
)

Código SQL [-]
insert into pagos values('2017-01-08')
insert into pagos values('2017-11-08')
insert into pagos values('2016-05-08')
insert into pagos values('2017-03-09')

Quiero hacer una consulta que me muestre las fechas desde el '2017-01-08' hasta '2017-11-08'
He hecho esto:

Código SQL [-]
declare @FechaInicio as date ='2017/01/08'
declare @FechaFin as date ='2017/11/08'
select fecha from pagos where fecha between @FechaInicial AND @FechaFin

Pero me muestra el mes 09 y solo lo quiero del 08

Código SQL [-]
2017-01-08
2017-11-08
2017-03-09

¿Alguna forma?

Hola puede ser porque defines la variable como FechaInicio y luego consultas por FechaInicial ???

Saludos
Responder Con Cita
  #4  
Antiguo Hace 2 Semanas
Avatar de movorack
[movorack] movorack is offline
Miembro
 
Registrado: feb 2007
Ubicación: Bogotá - Colombia
Posts: 1.027
Poder: 12
movorack Va camino a la fama
Si es MS SQL Server, usa convert tanto para ingresar los datos a la tabla como para consultarlos.
__________________
Buena caza y buen remar... http://mivaler.blogspot.com
Responder Con Cita
  #5  
Antiguo Hace 2 Semanas
Unkger Unkger is offline
Miembro
 
Registrado: ago 2017
Posts: 11
Poder: 0
Unkger Va por buen camino
Cita:
Empezado por ecfisa Ver Mensaje
Hola.

No se con que RDBMS estas trabajando, pareciera MySQL y no lo he usado, pero supongo que podrías intentar algo similar a esto:
Código SQL [-]
SELECT FECHA
FROM PAGOS
WHERE EXTRACT(MONTH FROM FECHA) > @FECHAINICIO
  AND EXTRACT(MONTH FROM FECHA) < @FECHAFIN

Saludos
Estoy usando SQL Server 2016, ese código me marca error cerca del 'FROM', aunque ya lo intente con estas otras formas no me muestra nada:

Código SQL [-]
select fecha from pagos
where datepart(month, fecha) > '20170801' and datepart(month, fecha) < '20170811'

Código SQL [-]
select fecha from pagos
where datepart(month, fecha) between '20170108' and '20171108'

Código SQL [-]
select fecha from pagos
where month(fecha) between '20170108' and '20171108'
Responder Con Cita
  #6  
Antiguo Hace 2 Semanas
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 9.795
Poder: 27
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
Empezado por Unkger Ver Mensaje
Estoy usando SQL Server 2016...
Infiero que el problema se te presenta por que la función DATEPART, de modo similar a la función MONTH, devuelven un valor de tipo INT.
Por lo que creo que tendrías que realizar la comparación usando un valor del mismo tipo o, de otro modo, usar alguna de las funciones de conversión que te ofrece Transact-SQL.

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #7  
Antiguo Hace 2 Semanas
Avatar de Neftali
Neftali Neftali is offline
-Germán Estévez-
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 15.317
Poder: 10
Neftali Va camino a la famaNeftali Va camino a la fama
Aparte de lo comentado por los compañeros, recomendaría que para hacer pruebas, utilices siempre días por encima del 12.

Código SQL [-]
insert into pagos values('2017-01-08') 
insert into pagos values('2017-11-08') 
insert into pagos values('2016-05-08') 
insert into pagos values('2017-03-09')

insert into pagos values('2017-03-20')
insert into pagos values('2017-12-30')

Es una forma de detectar errores con los formatos (yyyy-dd-mm o yyyy-mm-dd). Utilizando días por encima del 12 estás seguro de que el formato es el corecto, ya que si no lo es obtendrás un error.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #8  
Antiguo Hace 2 Semanas
Avatar de ElDioni
[ElDioni] ElDioni is offline
Miembro Premium
 
Registrado: jul 2005
Ubicación: Murcia (España)
Posts: 869
Poder: 13
ElDioni Va por buen camino
¿no será por las barras y los guiones?

Código:
insert into pagos values('2017-03-09')
...
declare @FechaInicio as date ='2017/01/08'
__________________
Confórmate con lo que tienes pero anhela lo que te falta.
Responder Con Cita
  #9  
Antiguo Hace 2 Semanas
Avatar de movorack
[movorack] movorack is offline
Miembro
 
Registrado: feb 2007
Ubicación: Bogotá - Colombia
Posts: 1.027
Poder: 12
movorack Va camino a la fama
Cita:
Empezado por ElDioni Ver Mensaje
¿no será por las barras y los guiones?

Código:
insert into pagos values('2017-03-09')
...
declare @FechaInicio as date ='2017/01/08'
Por eso le dije que usara convert. Puede que al ingresarlos con guiones la fecha que el motor interprete sea una diferente a la que el pretende ingresar. Lo mismo al consultarlo con las barras

Código SQL [-]
--Convert datetime style 103: dd/mm/yyyy
insert into pagos values(CONVERT(DATETIME, '01/08/2017', 103))
insert into pagos values(CONVERT(DATETIME, '11/08/2017', 103))
insert into pagos values(CONVERT(DATETIME, '05/08/2016', 103))
insert into pagos values(CONVERT(DATETIME, '03/09/2017', 103))


declare @FechaInicio as date = CONVERT(DATETIME, '01/08/2017', 103)
declare @FechaFin as date = CONVERT(DATETIME, '11/08/2017', 103)
select fecha from pagos where fecha between @FechaInicio AND @FechaFin
__________________
Buena caza y buen remar... http://mivaler.blogspot.com
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
consulta por fecha (tipo Date) delphi negrokau Varios 8 19-05-2011 18:36:57
Pregunta sobre tipo Date betto Firebird e Interbase 6 14-05-2008 00:16:33
tipo date jSr MySQL 7 14-11-2007 08:36:57
Locate a una tipo date o time RONPABLO Firebird e Interbase 6 29-11-2004 09:49:04
campo tipo date Giniromero Firebird e Interbase 21 13-08-2003 13:47:53


La franja horaria es GMT +2. Ahora son las 11:18:32.


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