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

Problema CONSTRAINT tipo fecha

Estas en el tema de Problema CONSTRAINT tipo fecha en el foro de Oracle en Foros del Web. Hola miren tengo un problema al crear una tabla y crear una validación de la fecha, en cuestión quiero que la fecha que introduzcan sean ...
  #1 (permalink)  
Antiguo 06/12/2010, 11:20
 
Fecha de Ingreso: octubre-2009
Mensajes: 18
Antigüedad: 14 años, 5 meses
Puntos: 0
Problema CONSTRAINT tipo fecha

Hola miren tengo un problema al crear una tabla y crear una validación de la fecha, en cuestión quiero que la fecha que introduzcan sean entre un intervalo, dejo el código para que lo vean :D


Código:
CREATE TABLE etapas (
numetapa	number(2),
numkms		number(3),
tipo		varchar2(30),
fecha		DATE,
CONSTRAINT pk_etapas PRIMARY KEY(numetapa),
CONSTRAINT fechaetapa CHECK(fecha BETWEEN (to_char(fecha,'yyyymmdd')>'20100727') AND (to_char(fecha,'yyyymmdd')<'20100819'))
);
Me da un error sql de que le falta el paréntesis derecho y no se donde puede estar el error!

Espero vuestra ayuda!! Gracias!
  #2 (permalink)  
Antiguo 06/12/2010, 12:20
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 1 mes
Puntos: 360
Respuesta: Problema CONSTRAINT tipo fecha

Tienes problemas con el uso de check constraint y la clausula between.

La forma correcta es:
Código SQL:
Ver original
  1. CREATE TABLE etapas(
  2. numetapa    NUMBER(2),
  3. numkms      NUMBER(3),
  4. tipo        varchar2(30),
  5. fecha       DATE,
  6. CONSTRAINT pk_etapas PRIMARY KEY(numetapa),
  7. CONSTRAINT fechaetapa CHECK (TO_DATE(fecha,'YYYYMMDD')
  8.                              BETWEEN TO_DATE('20100727','YYYYMMDD')
  9.                              AND TO_DATE('20100819','YYYYMMDD')));

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 06/12/2010, 13:51
 
Fecha de Ingreso: octubre-2009
Mensajes: 18
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: Problema CONSTRAINT tipo fecha

Gracias huesos52, va perfectamente ahora :D
  #4 (permalink)  
Antiguo 06/12/2010, 15:01
 
Fecha de Ingreso: octubre-2009
Mensajes: 18
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: Problema CONSTRAINT tipo fecha

huesos52 a la hora de insertar un registro me pega el siguiente error


Código:
SQL> insert into etapas (numetapa, numkms, tipo, fecha)
  2  values (1, 9, 'Contrarreloj','27/07/10');
insert into etapas (numetapa, numkms, tipo, fecha)
        *
ERROR en lÝnea 1:
ORA-01858: se ha encontrado un carßcter no numÚrico donde se espe
numÚrico
Parece como si el campo fecha no lo validara o no fuese valido :S
  #5 (permalink)  
Antiguo 06/12/2010, 15:53
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 1 mes
Puntos: 360
Respuesta: Problema CONSTRAINT tipo fecha

Que raro.
No se que pasa copn between. Juro que antes lo habia usado.

hazlo así que da lo mismo
Código SQL:
Ver original
  1. CREATE TABLE etapas(
  2. numetapa    NUMBER(2),
  3. numkms      NUMBER(3),
  4. tipo        varchar2(30),
  5. fecha       DATE,
  6. CONSTRAINT pk_etapas PRIMARY KEY(numetapa),
  7. CONSTRAINT fechaetapa CHECK (fecha >= TO_DATE('20100727','YYYYMMDD')
  8.                              AND fecha <= TO_DATE('20100819','YYYYMMDD')));
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #6 (permalink)  
Antiguo 06/12/2010, 16:24
 
Fecha de Ingreso: junio-2007
Mensajes: 891
Antigüedad: 16 años, 9 meses
Puntos: 43
Respuesta: Problema CONSTRAINT tipo fecha

Cambia esto : '27/07/10'

por esto : TO_DATE('20100727','YYYYMMDD')

Y nos cuentas.
  #7 (permalink)  
Antiguo 06/12/2010, 19:44
 
Fecha de Ingreso: octubre-2009
Mensajes: 18
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: Problema CONSTRAINT tipo fecha

Gracias a los 2! ahora va todo perfectamente y la validacion funciona a la perfeccion :D Muchisimas gracias

Una ultima duda también tengo que realizar un código que valide la siguiente cuestión:

- El formato del campo DistanciaAlGanador es 'hh:mi:ss'. Una hora tiene 60 minutos. Un minuto tiene 60 segundos.

No tengo ni la mas idea de como meterle mano a dicha cuestión, pongo el código actual como lo tengo de su tabla correspondiente:


CREATE TABLE clasificacionetapas (
numetapa number(2),
dorsal number(3),
posicion varchar2(8),
distanciaalganador varchar2(8),
CONSTRAINT pk_clasificaciones PRIMARY KEY(numetapa,dorsal),
CONSTRAINT fk_numetapa FOREIGN KEY(numetapa) REFERENCES etapas,
CONSTRAINT fk_dorsal FOREIGN KEY(dorsal) REFERENCES ciclistas,
CONSTRAINT posicionclasi CHECK(posicion='ABANDONO' OR posicion BETWEEN '1' AND '99')
);

Un Saludo y Gracias!

Etiquetas: constraint, tipo, fechas
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 08:28.