Listado completo de tutoriales
19 - Tipos de datos (fechas y horas) |
Para guardar fechas y horas dispone de varios tipos:
1) date: representa una fecha con formato "YYYY-MM-DD". El rango va de "1000-01-01" a "9999-12-31".
2) datetime: almacena fecha y hora, su formato es "YYYY-MM-DD HH:MM:SS". El rango es de "1000-01-01 00:00:00" a "9999-12-31 23:59:59".
3) time: una hora. Su formato es "HH:MM:SS". El rango va de "-838:59:59" a "838:59:59".
4) year(2) y year(4): un año. Su formato es "YYYY" o "YY". Permite valores desde 1901 a 2155 (en formato de 4 dígitos) y desde 1970 a 2069 (en formato de 2 dígitos).
Si ingresamos los valores como cadenas, un valor entre "00" y "69" es convertido a valores "year" en el rango de 2000 a 2069; si el valor está entre "70" y "99", se convierten a valores "year" en el rango 1970 a 1999.
Si ingresamos un valor numérico 0, se convierte en "0000"; entre 1 y 69, se convierte a valores "year" entre 2001 a 2069; entre 70 y 99, es convertido a valores "year" de 1970 a 1999.
Para almacenar valores de tipo fecha se permiten como separadores "/", "-" y ".".
Si ingresamos '06-12-31' (año de 2 dígitos), lo toma como '2006-12-31'.
Si ingresamos '2006-2-1' (mes y día de 1 dígito), lo toma como '2006-02-01'.
Si ingresamos '20061231' (cadena sin separador), lo toma como '2006-12-31'.
Si ingresamos 20061231 (numérico), lo toma como '2006-12-31'.
Si ingresamos '20061231153021' (cadena sin separadores), lo toma como '2006-12-31 15:30:21'.
Si ingresamos '200612311530' (cadena sin separadores con un dato faltante) no lo reconoce como fechahora y almacena ceros.
Si ingresamos '2006123' (cadena sin separadores con un dato faltante) no lo reconoce como fecha y almacena ceros.
Si ingresamos '2006-12-31 11:30:21' (valor date time) en un campo 'date', toma sólo la parte de la fecha, la hora se corta, se guarda '2006-12-31'.
Es importante elegir el tipo de dato adecuado según el caso, el más preciso. Por ejemplo, si sólo necesitamos registrar un año (sin día ni mes), el tipo adecuado es "year" y no "date".
Tipo Bytes de almacenamiento _______________________________________ date 3 datetime 8 time 3 year 1
Ingresemos al programa "Workbench" y ejecutemos el siguiente bloque de instrucciones SQL para probar campos de tipo time:
drop table if exists vehiculos; create table vehiculos( patente char(6) not null, tipo char (4), horallegada time not null, horasalida time ); 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'); select * from vehiculos; update vehiculos set horasalida='11:45' where patente='ACD123'; insert into vehiculos values('LIO987','auto','10',null); select * from vehiculos;
Que nos generan una salida similar a esta: