Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Datetime y Between

Estas en el tema de Datetime y Between en el foro de SQL Server en Foros del Web. Veamos, llevo ya una semana intentando averiguar como funciona esto y no hay manera. Tengo una consulta que ataca a una tabla dónde albergan noticias ...
  #1 (permalink)  
Antiguo 12/05/2009, 02:01
 
Fecha de Ingreso: marzo-2009
Mensajes: 11
Antigüedad: 15 años, 1 mes
Puntos: 0
Datetime y Between

Veamos, llevo ya una semana intentando averiguar como funciona esto y no hay manera.

Tengo una consulta que ataca a una tabla dónde albergan noticias con su titulo y fecha.

Mi objetivo es que dada la selección de un mes y un año me muestren todas las noticias correspondientes, todo esto lo haría con un between.

La cosa es que haciendo pruebas en el sql server ninguna funciona

select *
from noticias
where fecha BETWEEN '01/04/2009' AND '31/04/2009'


select *
from noticias
where fecha BETWEEN 2009/04/01' AND '2009/04/31'


select *
from noticias
where fecha BETWEEN '01-04-2009' AND '31-04-2009'


select *
from noticias
where fecha BETWEEN 2009-04-01' AND '2009-04-31'

select *
from noticias
where fecha BETWEEN '01042009' AND '31042009'

select *
from noticias
where fecha BETWEEN '20090401' AND '20090431'

Y en todas recibo el mismo error 'La conversión del tipo de datos char a datetime produjo un valor datetime fuera de intervalo.'

También probé a quitarle las comillas pero en ese caso la consulta me sale vacía, sin ningún resultado. ¿Alguna sugerencia?
  #2 (permalink)  
Antiguo 12/05/2009, 04:24
 
Fecha de Ingreso: febrero-2009
Mensajes: 312
Antigüedad: 15 años, 2 meses
Puntos: 4
Respuesta: Datetime y Between

Si. Una sugerencia:

Utilizar ANSI para las fechas.

YYYYMMDD
  #3 (permalink)  
Antiguo 12/05/2009, 19:27
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 10 meses
Puntos: 180
Respuesta: Datetime y Between

Otra sugerencia, comparar siempre las fechas con >= o <=

WHERE columnaFecha >= '20090101' and columnaFecha <= '20090131'
  #4 (permalink)  
Antiguo 13/05/2009, 02:56
 
Fecha de Ingreso: febrero-2009
Mensajes: 312
Antigüedad: 15 años, 2 meses
Puntos: 4
Respuesta: Datetime y Between

Hola iislas.
Lo que comentas de comparar con <= que yo sepa y corregirme si me equivoco, no es tan óptimo como utilizar between ya que con éste sólo recorre la tabla una vez y con los <= dos veces, ¿no es así?
Saludos
  #5 (permalink)  
Antiguo 13/05/2009, 07:14
Avatar de Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 19 años, 5 meses
Puntos: 38
Respuesta: Datetime y Between

No es asi..

no la recorre dos veces... solo filtras los dos campos, al igual que el between...


Saludos!
__________________
La sencillez y naturalidad son el supremo y último fin de la cultura...
--
MCTS : SQL Server 2008, .NET Framework 3.5, ASP.NET Applications.
  #6 (permalink)  
Antiguo 13/05/2009, 15:00
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 9 meses
Puntos: 39
Respuesta: Datetime y Between

Alguien que explique la diferencia entre between y >=, =<, es más rápido alguno?
Yo hasta ahora discrepo con Isaias sobre el uso del ANSI.
¿Acaso uno no configura el formato de fechas de la BD?
Por lo menos yo no he tenido problema con el formato.
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #7 (permalink)  
Antiguo 13/05/2009, 20:36
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 10 meses
Puntos: 180
Respuesta: Datetime y Between

Mi estimado amigo flaviovich

TODOS (vease, lo que escribo) los motores de base de datos almacenan las fechas en ANSI (YYYYMMDD HH:MM:SS, NNN), y algunos otros (SQL Server 2008), separan FECHA de HORAS.

Ya he publicado por estos foros todo un analisis de Mr. (mvp) Maxi D'Accoto, donde hace un estudio sobre pruebas de alto volumen, del porque hacer comparaciones con >= y <=, en lugar de hacerlo con BETWEEN (favor de buscar y leer, "Manejo de Fechas en SQL Server").

Saludos
  #8 (permalink)  
Antiguo 14/05/2009, 04:04
 
Fecha de Ingreso: junio-2007
Mensajes: 28
Antigüedad: 16 años, 11 meses
Puntos: 0
Respuesta: Datetime y Between

Yo creo que el error que le da a tonetete es por que el mes 4 abril tiene 30 dias y le esta poniendo hasta el 31. por eso dice que es un datetime fuera de intervalo.
A parte de la discursion que tengais sobre si es mejor <= o between, yo tampoco soy partidario del between.

error 'La conversión del tipo de datos char a datetime produjo un valor datetime fuera de intervalo.'
  #9 (permalink)  
Antiguo 14/05/2009, 08:03
Avatar de Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 19 años, 5 meses
Puntos: 38
De acuerdo Respuesta: Datetime y Between




Cita:
Iniciado por garruc Ver Mensaje
Yo creo que el error que le da a tonetete es por que el mes 4 abril tiene 30 dias y le esta poniendo hasta el 31. por eso dice que es un datetime fuera de intervalo.
Muy buena observacion....



Saludos!
__________________
La sencillez y naturalidad son el supremo y último fin de la cultura...
--
MCTS : SQL Server 2008, .NET Framework 3.5, ASP.NET Applications.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 2 personas




La zona horaria es GMT -6. Ahora son las 23:23.