Saltar al contenido

Funciones de fecha en SQL Server y MySQL

septiembre 21, 2021

Fechas SQL

La parte más difícil al trabajar con fechas es asegurarse de que el formato de la fecha que está intentando insertar coincide con el formato de la columna de fecha en la base de datos.

Siempre que sus datos contengan solo la parte de la fecha, sus consultas funcionarán como se esperaba. Sin embargo, si se trata de una parte de tiempo, se vuelve más complicado.


Tipos de datos de fecha SQL

MySQL viene con los siguientes tipos de datos para almacenar una fecha o un valor de fecha / hora en la base de datos:

  • DATE – formato AAAA-MM-DD
  • DATETIME – formato: AAAA-MM-DD HH: MI: SS
  • TIMESTAMP – formato: AAAA-MM-DD HH: MI: SS
  • YEAR – formato YYYY o YY

servidor SQL viene con los siguientes tipos de datos para almacenar una fecha o un valor de fecha / hora en la base de datos:

  • DATE – formato AAAA-MM-DD
  • DATETIME – formato: AAAA-MM-DD HH: MI: SS
  • SMALLDATETIME – formato: AAAA-MM-DD HH: MI: SS
  • TIMESTAMP – formato: un número único

Nota: ¡Los tipos de fecha se eligen para una columna cuando crea una nueva tabla en su base de datos!


SQL trabajando con fechas

Mira la siguiente tabla:

Tabla de pedidos

Solicitar ID Nombre del producto Fecha de orden
1 Geitost 2008-11-11
2 Pierrot camembert 2008-11-09
3 Mozzarella di Giovanni 2008-11-11
4 Mascarpone Fabioli 2008-10-29

Ahora queremos seleccionar los registros con un OrderDate de «2008-11-11» de la tabla anterior.

Usamos lo siguiente SELECT declaración:

SELECCIONAR * DE Pedidos DONDE OrderDate = «2008-11-11»

El conjunto de resultados se verá así:

Solicitar ID Nombre del producto Fecha de orden
1 Geitost 2008-11-11
3 Mozzarella di Giovanni 2008-11-11

Nota: ¡Dos fechas se pueden comparar fácilmente si no hay un componente de tiempo involucrado!

Ahora, suponga que la tabla «Pedidos» tiene este aspecto (observe el componente de tiempo agregado en la columna «Fecha del pedido»):

Solicitar ID Nombre del producto Fecha de orden
1 Geitost 2008-11-11 13:23:44
2 Pierrot camembert 2008-11-09 15:45:21
3 Mozzarella di Giovanni 2008-11-11 11:12:01
4 Mascarpone Fabioli 2008-10-29 14:56:59

Si usamos el mismo SELECT declaración como arriba:

SELECCIONAR * DE Pedidos DONDE OrderDate = «2008-11-11»

¡No obtendremos ningún resultado! Esto se debe a que la consulta solo busca fechas sin una porción de tiempo.

Propina: Para que sus consultas sean simples y fáciles de mantener, no utilice componentes de tiempo en sus fechas, a menos que sea necesario.

close