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

Ayuda urgente con actualización de fecha

Estas en el tema de Ayuda urgente con actualización de fecha en el foro de SQL Server en Foros del Web. Hola Tengo una tabla en la que tengo un campo llamado "Dia" que es de tipo varchar(10). En este campo guardo fechas. El problema es ...
  #1 (permalink)  
Antiguo 25/11/2008, 11:07
 
Fecha de Ingreso: agosto-2007
Mensajes: 119
Antigüedad: 16 años, 8 meses
Puntos: 1
Ayuda urgente con actualización de fecha

Hola

Tengo una tabla en la que tengo un campo llamado "Dia" que es de tipo varchar(10). En este campo guardo fechas. El problema es que quiero regularizar estas fechas porque hay casos en los que cuando el día es un solo dígito o el mes, la fecha que queda es algo como 1/6/2008, en lugar de lo que verdaderamente quiero (y por eso quiero regularizarlo) que es 01/06/2008.

La sentencia update que utilizo para ello es la siguiente:

update TABLA
set Dia = right('0' + rtrim(day(Dia)),2) + '/' + right('0' + rtrim(month(Dia)),2) + '/' + rtrim(year(Dia))

de esta manera añado un 0 a la izquierda cuando el dígito del mes o día es uno sólo. El problema es que al hacer esto me da el siguiente error:

The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value.

Y lo curioso de todo es que este update, en SQL Server 2005 funciona bien, pero en SQL Server 2000 da el error anterior, y el problema es que lo he de hacer sobre una base de datos SQL Server 2000.

¿Alguien me puede ayudar con ésto?

Gracias a tod@s
  #2 (permalink)  
Antiguo 25/11/2008, 13:56
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Respuesta: Ayuda urgente con actualización de fecha

El problema es que las funciones Day, Month y Year reciben parametros del tipo datetime, y lo que tu le pasas es un varchar.
Entonces, lo que debes hacer es convertir el valor a datetime, para esto puedes usar la funcion Convert, por ejemplo: convert(varchar,Dia,103).
Suerte!
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #3 (permalink)  
Antiguo 25/11/2008, 14:26
Avatar de usuariobaneado  
Fecha de Ingreso: diciembre-2007
Mensajes: 402
Antigüedad: 16 años, 4 meses
Puntos: 5
Respuesta: Ayuda urgente con actualización de fecha

El problema es que estás seteando una fecha en formado dd/mm/aaaa cuando el formato con el que trabaja SQL Server es mm/dd/aaaa o para ser mas ANSI aaaa-mm-dd hh:mm:ss aunque las horas y los minutos se ponen en cero por defecto si no son agregadas

Mira lo que dice el error:

The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value

La conversión de caracter a fecha resulta un valor fecha fuera del rango (monstruo de traducción )

Eso quiere decir que cuando intenta convertir un día mayor a doce el sql server siempre pensará que ese 13, 14, 15, etc es el mes y allí se cae
__________________
Yo quiero ser el pelucón del barrio
  #4 (permalink)  
Antiguo 25/11/2008, 14:34
Avatar de GeoAvila
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Antigua Guatemala
Mensajes: 4.032
Antigüedad: 20 años, 4 meses
Puntos: 53
Respuesta: Ayuda urgente con actualización de fecha

Cita:
Iniciado por usuariobaneado Ver Mensaje
El problema es que estás seteando una fecha en formado dd/mm/aaaa cuando el formato con el que trabaja SQL Server es mm/dd/aaaa o para ser mas ANSI aaaa-mm-dd hh:mm:ss aunque las horas y los minutos se ponen en cero por defecto si no son agregadas

Mira lo que dice el error:

The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value

La conversión de caracter a fecha resulta un valor fecha fuera del rango (monstruo de traducción )

Eso quiere decir que cuando intenta convertir un día mayor a doce el sql server siempre pensará que ese 13, 14, 15, etc es el mes y allí se cae
antes de tu script poné

set dateformat dmy

e intentá de nuevo

nos vemos.
__________________
* Antes de preguntar lee las FAQ, y por favor no hagas preguntas en las FAQ
Sitio http://www.geoavila.com twitter: @GeoAvila
  #5 (permalink)  
Antiguo 25/11/2008, 15:22
 
Fecha de Ingreso: agosto-2007
Mensajes: 119
Antigüedad: 16 años, 8 meses
Puntos: 1
Respuesta: Ayuda urgente con actualización de fecha

Cita:
Iniciado por GeoAvila Ver Mensaje
antes de tu script poné

set dateformat dmy

e intentá de nuevo

nos vemos.
en la propia stored procedure, antes del update, pongo el set dateformat dmy ?
  #6 (permalink)  
Antiguo 26/11/2008, 13:52
Avatar de GeoAvila
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Antigua Guatemala
Mensajes: 4.032
Antigüedad: 20 años, 4 meses
Puntos: 53
Respuesta: Ayuda urgente con actualización de fecha

ok entonces tu problema es que la fecha esta quedando así por ejemplo

1/11/2008 para el primero de noviembre y debe quedar así
01/11/2008

entonces pone un replicate para agregar los "0" en la fecha, veo que tenes right '0' en tu sentencia, te pregunto que pasa si es 11 de toda maneras agrega el 0 dejando así el dia 011, cosa que es incorrecto debe quedar así.


por ejemlo

para el día

replicate('0',rtrim(day(Dia))-len('1')) +rtrim(day(Dia))

nos vemos..
__________________
* Antes de preguntar lee las FAQ, y por favor no hagas preguntas en las FAQ
Sitio http://www.geoavila.com twitter: @GeoAvila
  #7 (permalink)  
Antiguo 26/11/2008, 15:08
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Ayuda urgente con actualización de fecha

Para evitarse TODOS esos problemas sobre el manejo de fechas, en SQL Server y otros motores (incluso cuando se migra).

Siempre he aconsejado manejar el formato standar ANSI.

YYYYMMDD HH:MM:SS, NNN
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




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