PDA

Ver la Versión Completa : SQL - GetDate()


Viet
30-10-2003, 17:00:01
Buenas Colegas!!

Antes que nada saludos a todos.

Bien, estoy trabajando contra MSSQL Server, y mi pregunta es simple.

Tengo que recuperar todos los registros donde el campo fecha sea hoy.
Este campo fecha es DateTime y almacena la fecha y hora de un evento.

Lo estoy tratando de hacer de varias formas pero ninguna me convence.

por ejemplo

en el Where pongo

DatePart(dy, fecha)=DatePart(dy, GetDate()) pero esto me trae los reguistros de otros años

tambien probe con

Cast(Cast(fecha as int)as datetime)=Cast(Cast(GetDate() as int)as datetime)

esta forma me parece muy rapida y eficiente, pero el problema es que la conversion de GetDate() siempre me da un dia posterir a hoy,
osea, me da GetDate()+1. La verdad que no entiendo por que y no me gustaria qye esto sea un problema de configuracion del server. Y al migrarlo a otro server deba cambiar todos mis SP.

Preguntas

1) es normal que pase eso con GetDate()
2) se les ocurre una mejor forma ?

Saludos :rolleyes:

jachguate
30-10-2003, 20:07:06
No hay una función Trunc() sobre TimeStamp.

No se si es parte del estándar, pero normalmente trunc(TimeStamp) quita la información de hora y deja solamente la fecha, por lo que

Trunc(fecha) = Trunc(GetDate())

debiera funcionar...

Hasta luego.

;)

__cadetill
30-10-2003, 21:25:34
Posteado originalmente por Viet
1) es normal que pase eso con GetDate()

Pues la verdad no lo se, nunca he utilizado GetDate()

Posteado originalmente por Viet
2) se les ocurre una mejor forma ?

Prueba con esto a ver


Cast(fecha as date) = Cast(GetDate() as date)


Espero te sirva

Viet
30-10-2003, 22:42:35
Gracias a ambos por sus respuestas, pero lamentablemente en MSSQL Server (6.5), no existe

ni Trunc , ni el tipo date......

...... asi que por ahora lo mejor que encontre es
DatePart(dy, fecha)=DatePart(dy, GetDate())
and (Year(fecha)=Year(GetDate()))


pero me parece un analisis demaciado costoso , para algo tan simple... sigo a la escucha de sugerencias..


;)