19 - Tipos de datos (fechas y horas) |
Una playa de estacionamiento guarda cada día los datos de los vehículos que ingresan a la playa en una tabla llamada "vehiculos".
Eliminamos la tabla "vehiculos" si existe:
drop table if exists vehiculos;
Creamos la tabla con la siguiente estructura:
create table vehiculos( patente char(6) not null, tipo char (4), horallegada time not null, horasalida time );
Hemos definido el campo "patente" de tipo "char" y no "varchar" porque la cadena de caracteres siempre tendrá la misma longitud (6 caracteres), con esta definición ocupamos 6 bytes, si lo hubiésemos definido como "varchar(6)" ocuparía 7 bytes. Lo mismo sucede con el campo "tipo", en el cual almacenaremos "auto" o "moto", necesitamos 4 caracteres fijos. Para los campos que registran la hora de llegada y de salida de cada vehículo usamos "time" porque solamente almacenaremos horas, no fechas.
Ingresamos algunos registros:
insert into vehiculos (patente,tipo,horallegada) values ('ACD123','auto','8:30'); insert into vehiculos (patente,tipo,horallegada) values('BGF234','moto','8:35'); insert into vehiculos (patente,tipo,horallegada) values('KIU467','auto','9:40');
Vemos los registros cargados:
select * from vehiculos;
Note que no ingresamos los segundos y colocó por defecto "00" para ellos.
Actualizamos la hora de salida del vehículo con patente "ACD123":>
update vehiculos set horasalida='11:45' where patente='ACD123';
Ingresemos un registro con la hora, sin los minutos:
insert into vehiculos values('LIO987','auto','10',null);
veamos lo que sucedió:
select * from vehiculos;
almacenó el valor ingresado como si fueran segundos.
Ingresamos un valor de horas y minutos sin separador:
insert into vehiculos values('GTR987','auto','1010',null);
incluye el separador, almacena "10:10".
Si ingresamos un valor "datetime" (fecha y hora), almacena solamente la hora:
insert into vehiculos values('HTR234','auto','2006-12-15 12:15',null);
Si ingresamos un separador diferente al permitido, por ejemplo "/", guarda solamente el último valor y lo coloca como segundos:
insert into vehiculos values('KUY246','auto','12/15',null);
almacena "00:00:15".