Trabajando con fechas en SQL

MySQL nos da 3 tipos de datos para trabajar con fechas: DATE, TIME y DATE TIME.

DATE Nos permite guardar una fecha, TIME nos permite guardar una hora y DATE TIME nos permite guardar una fecha y hora juntos, esta tabla contiene un ejemplo de cada uno de los tipos de datos:

create table gente(
 nombre VARCHAR(100),
 cumplefecha DATE,
 cumplehora TIME,
 cumpleanios DATETIME 
);

Y acá podemos ver un ejemplo de introducir un registro a esa tabla:

MariaDB [libreria]> insert into gente (nombre, cumplefecha, cumplehora, cumpleanios) 
values ('alejandro', '1983-08-26', '10:07:35', '1983-08-26 10:07:35');

Lo cual nos daría como resultado algo como:

MariaDB [libreria]> select * from gente;
+-----------+-------------+------------+---------------------+
| nombre | cumplefecha | cumplehora | cumpleanios |
+-----------+-------------+------------+---------------------+
| alejandro | 1983-08-26 | 10:07:35 | 1983-08-26 10:07:35 |
+-----------+-------------+------------+---------------------+

Algo que podemos usar para generar fechas y horas automáticamente son CURDATE(), CURTIME() y NOW() para generar la fecha actual, hora actual y date time actual. Por ejemplo para insertar un nuevo registro con la hora y fecha actual haríamos algo como:

MariaDB [libreria]> insert into gente (nombre, cumplefecha, cumplehora, cumpleanios) 
values('nuevo', curdate(), curtime(), now());

Lo cual nos da como resultado:

MariaDB [libreria]> select * from gente where nombre = 'nuevo';
+--------+-------------+------------+---------------------+
| nombre | cumplefecha | cumplehora | cumpleanios |
+--------+-------------+------------+---------------------+
| nuevo | 2017-09-25 | 14:48:57 | 2017-09-25 14:48:57 |
+--------+-------------+------------+---------------------+

Podemos formatear las fechas de SQL con los siguientes comandos:

DAY(): Muestra el día del mes de la fecha seleccionada:

MariaDB [libreria]> select nombre, day(cumplefecha) from gente;
+-----------+------------------+
| nombre | day(cumplefecha) |
+-----------+------------------+
| alejandro | 26 |

MONTH(): Muesta el mes de la fecha en numero.

MONTHNAME(): Muestra el mes de la fecha en letra.

YEAR(): Muestra el año de la fecha en letras.

DAYOFNAME(): Muestra el nombre del día de la fecha seleccionada:

MariaDB [libreria]> select nombre, dayname(cumplefecha) from gente;
+-----------+----------------------+
| nombre | dayname(cumplefecha) |
+-----------+----------------------+
| alejandro | Friday |

DAYOFWEEK(): Nos da el día de la semana en numero:

MariaDB [libreria]> select nombre, dayofweek(cumplefecha) from gente;
+-----------+------------------------+
| nombre | dayofweek(cumplefecha) |
+-----------+------------------------+
| alejandro | 6 |

DAYOFYEAR(): Nos da el numero del día en relación con el año actual:

MariaDB [libreria]> select nombre, dayofyear(cumplefecha) from gente;
+-----------+------------------------+
| nombre | dayofyear(cumplefecha) |
+-----------+------------------------+
| alejandro | 238 |

Otra forma de darle formato a las fechas es usando la función DATE_FORMAT, la cual funciona de esta forma:

MariaDB [libreria]> select date_format(cumplefecha,'%d de %M del %Y') 
as fecha from gente;
+--------------------------+
| fecha |
+--------------------------+
| 26 de August del 1983 |

La documentacion completa de DATE_FORMAT la podemos ver en este enlace.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s