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

Fechas en Sql server 2000

Estas en el tema de Fechas en Sql server 2000 en el foro de Bases de Datos General en Foros del Web. En una página que tenía hecha en ASP Y ms-access la estoy conviertiendo a ASP y SQL SERVER 2000 , despues de superar pequeñas dificultades ...
  #1 (permalink)  
Antiguo 06/04/2003, 10:18
 
Fecha de Ingreso: marzo-2003
Mensajes: 16
Antigüedad: 21 años, 1 mes
Puntos: 0
Fechas en Sql server 2000

En una página que tenía hecha en ASP Y ms-access la estoy conviertiendo a ASP y SQL SERVER 2000 , despues de superar pequeñas dificultades parece no tener mucha problematica.
Sin embargo como ya me esperaba con las fechas me estoy volviendo un poco loco, no se que formato utilizar a la hora de hacer las querys. Utilizo el tipo de fecha datetime. En principio simplemente utilizaba la cadena siguiente

aaaammdd

de manera que una sentencia sql quedaba de la siguiente manera

select * from noticias
where fecha between (20030101 and 20030606)

que deberia coger las noticias entre esas dos fechas, y no lo hace.

Me gustaria que me indicarais que formato utilizo de tal manera que no dependa de el pais o el idioma del servidor.

Por si sirve utilizo OLE DB Provider for ODBC

Muchas gracias.
  #2 (permalink)  
Antiguo 07/04/2003, 17:21
 
Fecha de Ingreso: marzo-2003
Ubicación: Santa Marta
Mensajes: 30
Antigüedad: 21 años, 1 mes
Puntos: 0
Trabajar con fechas

Hola, existen varias cosas para que tengas problemas con la fecha.
1. Mira como esta la configuracion regional. (panel de control/configuracion regional), y aplicas la fecha que tu quieras. Ej, (mm/dd/yyyy)
2. Cuando has los querys aplica este formato, no es lo mas usual, pero funciona. Ej.

SQL = "SELECT * " _
& "FROM nmbre_tbla " _
& "WHERE fcha >= '" & FORMAT (fcha, "MM/DD/YYYY") & "'"
& "AND fcha <= '" & FORMAT(fcha,"MM/DD/YYYY") & "'"

Recuerda que las fechas deben de ir en coma simple ('), ya que deden tratarse como cadena...
Suerte y me comentas
  #3 (permalink)  
Antiguo 08/04/2003, 10:29
 
Fecha de Ingreso: marzo-2003
Mensajes: 16
Antigüedad: 21 años, 1 mes
Puntos: 0
No se si lo he puesto correctamente, en el query analyzer he puesto lo siguiente para probar tu forma:

select * from noticias
where fecha between 'FORMAT(01/01/2003, "MM/DD/YYYY")' and 'FORMAT(06/06/2003, "MM/DD/YYYY")'

y me ha puesto lo siguientes:

Server: Msg 241, Level 16, State 1, Line 1
Syntax error converting datetime from character string.

No obstante he encontrado una solución que funciona, sin embargo me parece dependiente del formato de fecha de cada pais. Simplemente ponfo las fechas así: 'dd/mm/yy'

Donde se configura el formato de la fecha, ¿En la base de datos o en el sql server 2000 o en el S.O q esta instalado?

¿Se te ocurre alguna otra manera que funcione en todos los paises?

Lo que no quiero que ocurra sobre todo es que al subir mi página al servidor tenga q cabiar el codigo de todo lo relacionado a las fechas.

Por otra parte en la insercción de fechas utilizo el formato yyyy/mm/dd que al menos en access era internacional, ¿En el sql server 2000 tmbien lo es?
  #4 (permalink)  
Antiguo 08/04/2003, 13:56
 
Fecha de Ingreso: marzo-2003
Ubicación: Santa Marta
Mensajes: 30
Antigüedad: 21 años, 1 mes
Puntos: 0
Ojo, tu no puedes dar formato a cadenas asi:11/11/2003, para eso me imagino que capturas la fecha en un DTPICKER, o un textbox, al textbox le aplicas el formato ej:

FchaI = '01/01/2003'
FchaF = '10/11/2003'

entonces asi si:

SELECT *
FROM TBLA
WHERE FCHA BETWEEN FORMAT(FchaI,"MM/DD/YYYY" AND FORMAT (FchaF,"MM/DD/YYY")

Prueba y surte....
  #5 (permalink)  
Antiguo 08/04/2003, 17:49
Avatar de Jorge_Mota  
Fecha de Ingreso: diciembre-2002
Ubicación: Chapinlandia :-D
Mensajes: 725
Antigüedad: 21 años, 4 meses
Puntos: 11
intenta con
SET DATEFORMAT DMY
Declare @dFecha as Char(10)
Declare @dFecha_F as Char(10)

select @dFecha = '28/01/2003', @dFecha_F ='31/11/2003'

select * from noticias
where fecha between Cast(@dFecha as Datetime) and cast(@dFecha_F as datetime)


o si no quieres declarar variables
Set DATEFORMAT DMY
select * from noticias
where fecha between Cast('20/01/2003' as datetime) and cast('28/11/2003' as datetime)
__________________
Jorge Mota
Blog
Gubiz estafa
  #6 (permalink)  
Antiguo 13/04/2003, 10:12
 
Fecha de Ingreso: marzo-2003
Mensajes: 16
Antigüedad: 21 años, 1 mes
Puntos: 0
Muchas gracias, es lo que he hecho y ya me va de lujo. Ya habia pensado en esa solución pero el dreamweaver no me dejaba meter ese codigo SQL en el recordset así que lo he tenido que meter directamente.

Oye una pequeña duda que me ha surgido ahora, ¿como se ponen los valores por defectos en el tipo nvarchar? Tengo un campo de tamaño 1 que simplemente puede tomar los valores 's' o 'n' y quiero que el valor por defecto sea 'n'. Sin embaro lo pongo y se me pone automaticamente algo asi (N'n') o similar y no consigo que sea el valor x defecto "n"

Un Saludo
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 1 personas




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