Cómo formatear la fecha y la hora en el servidor SQL

Cómo formatear la fecha y la hora en el servidor SQL
La manipulación de los valores de fecha y hora utilizando los tipos de datos de fecha y hora y de tiempo es una de las funcionalidades más importantes de SQL, ya que estos tipos de datos están específicamente diseñados para almacenar dichos valores. Se utilizan con frecuencia en aplicaciones que requieren el cálculo y la manipulación de los datos de fecha y hora. En este artículo, profundizaremos en estos tipos de datos.

Tipos de datos de fecha básica en SQL

  • FECHA: Este tipo de datos se utiliza para almacenar los valores de fecha en el formato YYYY-MM-DD. Es capaz de representar las fechas dentro del rango del 1 de enero de 0001 al 31 de diciembre de 9999. Los valores de la fecha se almacenan en un formato compacto utilizando solo tres bytes.
  • TIEMPO: El tipo de datos de tiempo se utiliza para almacenar los valores de tiempo en el formato HH: MI: SS. Es capaz de representar los valores de tiempo dentro del rango de 00:00:00 a 23:59:59.
  • FECHA Y HORA: El tipo de datos DateTime es capaz de almacenar valores de fecha y hora en el YYYY-MM-DD HH: MI: Formato SS. Permite los valores dentro del rango del 1 de enero de 1753, 00:00:00 al 31 de diciembre de 9999, 23:59:59. Este tipo de datos es útil para almacenar las marcas de tiempo, como los tiempos de transacción o los tiempos de eventos.
  • Tiempo pequeño: Este tipo de datos es el mismo que el tipo de datos de fecha y hora pero con algunas diferencias más pequeñas. Almacena valores de fecha y hora, pero con un rango más pequeño de valores del 1 de enero de 1900, 00:00:00 al 6 de junio de 2079, 23:59:59. Los valores también se redondean al minuto más cercano, lo que ahorra espacio y reduce el tiempo de procesamiento. Este tipo de datos es útil para almacenar una información sensible al tiempo que no requiere alta precisión. Solo se necesitan 4 bytes de datos. Se almacena en el yyyy-mm-dd HH: mm: formato SS.
  • DateTime2: Este tipo de datos es similar al tipo de datos DateTime pero con mayor precisión y un rango más grande. El rango de valores es el mismo que el DateTime, pero puede almacenar los segundos fraccionarios de hasta 7 dígitos.

¿Cómo se almacenan las fechas en el servidor SQL??

Dentro del servidor SQL, las fechas se almacenan utilizando dos enteros de 4 bytes. El entero inicial corresponde a la cantidad de días anteriores o teniendo éxito la fecha base del 1 de enero de 1900. El segundo entero corresponde al número de 1/300 de un segundo que transcurrió desde la medianoche. Por ejemplo, la fecha "1 de enero de 2000 12:00:00 p.m." se almacena como los dos enteros: 36,529 (el número de días entre el 1 de enero de 1900 y el 1 de enero de 2000) y 43,200,000 (el número de 1/300 de un segundo desde la medianoche).

El servidor SQL también proporciona una serie de funciones incorporadas para trabajar con fechas, como Dataadd, Datediff y Convert, que nos permiten realizar las operaciones comunes, como sumar o restar los intervalos de tiempo, comparar las fechas y formatear el fechas.

Para realizar las consultas SQL en una base de datos, generalmente usamos una herramienta como SQL Server Management Studio (SSMS).

Creando un [DBO].[Órdenes] mesa

Para crear una tabla en nuestra base de datos, tenemos que escribir las siguientes consultas:

Crear tabla [DBO].[PEDIDOS] (
[ord_number] int no nulo
,[ord_datetime] dateTime null
,[ord_date] fecha nula
,[deli_datetime] dateTime null
,[last_visit_date] fecha nula
)

Insertar los datos en el [DBO].[Órdenes] mesa

Inserte los valores en la tabla usando el siguiente comando:

Insertar en [DBO].[Orders] ([ord_number], [ord_dateTime], [ord_date], [deli_datetime], [last_visit_date])
VALORES
('1', '2021-10-01 10:30:00', '2021-10-01', '2021-10-12 10:11:10', '2021-11-01'),
('2', '2021-10-01 12:45:00', '2021-10-01', '2021-10-10 14:10:11', '2021-10-15'),
('3', '2021-10-30 13:25:00', '2021-10-30', '2021-11-05 13:22:12', '2021-12-30'),
('4', '2021-09-22 16:30:00', '2021-09-22', '2021-09-25 14:12:13', '2021-12-22'),
('5', '2021-01-10 18:15:00', '2021-01-10', '2021-02-01 11:15:14', '2022-01-10'),
('6', Current_Timestamp, Convert (date, current_timestamp), dateadd (día, 5, current_timestamp), dateadd (mes, 5, current_timestamp)))

Convertir una fecha en cadena

Si traemos de vuelta los valores de fecha y hora de la tabla, los resultados se mostrarán como "2021-10-01 10:30:00.000 ". Pero si nos gusta convertirlo en una cadena en nuestro propio formato en el código SQL, podemos hacerlo utilizando la siguiente función:

SELECCIONAR
[ord_datetime]
,Convert (varchar (20), [ord_dateTime], 22) 'Order_date_string'
DE
[DBO].[PEDIDOS]

Producción:

ord_datetime ord_date_string
2021-10-01 10:30:00.000 10/01/21 10:30:00 am
2021-10-01 12:45:00.000 10/01/21 12:45:00 PM
2021-10-30 13:25:00.000 30/10/21 1:25:00 PM

Encontrar una fecha específica usando la cláusula WHERE

Para encontrar los pedidos donde la fecha de pedido es el 1 de diciembre de 2021, tenemos que seguir la siguiente consulta:

SELECCIONAR
[ord_number]
,[ord_date]
DE
[DBO].[PEDIDOS]
DÓNDE
[ord_date] = '01/10/2021 '

Producción:

ord_number ord_date
5 2021-01-10
5 2021-01-10

Separar la fecha de la hora

También podemos usar la función de conversión en una fecha para recuperar solo el valor de la fecha especificando un estilo. Para esto, usamos la siguiente consulta:

Declarar @DD como fecha de fecha
Set @dd = '2011-07-03 20:30:40'
Seleccione Convert (varchar, @dd, 103)

Producción:

(Sin nombre de columna)
1 07/03/2011

Obtener la fecha y hora actuales

Aquí hay un ejemplo de una consulta SQL que recupera la fecha y hora actuales utilizando las funciones GetDate y Current_Timestamp:

SELECCIONAR
OBTENER LA FECHA()
,FECHA Y HORA ACTUAL

Producción:

(Sin nombre de columna) (sin nombre de columna)
1 2023-03-04 23:44:02.883 2023-03-04 23:44:02.883

Encontrar la diferencia entre dos fechas

A menudo es útil encontrar la diferencia entre dos fechas. Con esto, podemos hacer cosas como encontrar la cantidad de días entre el pedido y una fecha de entrega.

Aquí hay un ejemplo:

SELECCIONAR
[ord_date]
,[Deli_datetime]
,Datediff (día, [ord_date], [deli_datetime]) 'del_days'
DE
[DBO].[PEDIDOS]

Producción:

ord_date deli_datetime del_days
1 2021-10-01 2021-10-12 10:11:10.000 11
2 2021-10-01 2021-10-10 14:10:11.000 9
3 2021-10-30 2021-11-05 13:22:12.000 6

Conclusión

Aprendimos a manipular las fechas, los tiempos y las cuerdas utilizando las funciones incorporadas. Estas funciones son muy útiles para realizar cálculos y transformaciones en los datos almacenados en las tablas de SQL Server. Al comprender y usar estos tipos y funciones de datos de manera efectiva, podemos escribir consultas SQL más eficientes y poderosas.