Funciones de formato de fecha SQL como DateDiff Los administradores de bases de datos utilizan con frecuencia la función SQL y la función DateAdd SQL, pero muchos de nosotros nunca nos tomamos el tiempo para comprender completamente estas características extremadamente útiles. Para los profesionales que recién comienzan a utilizar SQL Server, estas funciones son algunas de las primeras en familiarizarse. Así que, con suerte, este artículo tendrá algo para todos en el espectro de habilidades
Uno de los tipos de datos más interesantes que se admiten en el mundo de las bases de datos relacionales es DateTime. En este artículo, veremos cómo trabajar con tipos de datos de fecha y hora en SQL Server. Entenderemos los conceptos básicos del tipo de datos de fecha y hora y también veremos varios ejemplos de cómo consultar los campos de fecha y hora utilizando funciones integradas dentro de SQL Server para manipular los datos, transformando los valores de fecha y hora. y en algunos casos, realizar operaciones aritméticas.
Primero, vamos a echar un vistazo a algunas funciones populares de formato de fecha y hora de SQL.
De forma predeterminada, SQL Server admite de forma inherente los idiomas que son compatibles con el sistema operativo Windows. Dependiendo de la configuración regional y de clasificación cuando realice la instalación de SQL Server, la visualización del formato de fecha SQL puede ser diferente. El tipo de datos que va a reproducir se determina según la configuración regional y la configuración de intercalación de SQL Server.
En SQL Server, el tipo de datos DATE tiene dos formatos de lenguaje neutro predeterminados
-
AAAAMMDD
El siguiente ejemplo, HumanResource Se consulta la tabla de empleados para ver el formato de fecha SQL de los valores de HireDate
123456USE AdventureWorks2014;IRSELECCIONE HireDate, BusinessEntityID, LoginID, JobTitleFROM HumanResources.Employee;GOAhora, consulta la columna HireDate usando un formato de lenguaje neutral. En la consulta, estamos pasando un valor entero que consta del año 2008; mes, 12 y séptimo día.
123SELECCIONE HireDate, BusinessEntityID, LoginID, JobTitleFROM HumanResources.EmployeeDONDE HireDate = «20081207»;Nota: Básicamente significa que el valor de entrada es numérico; el motor SQL lo convierte internamente y en realidad termina con un valor de carácter. Por lo tanto, está rodeado por comillas simples
-
MM-DD-YYYY (formato basado en EE. UU.)
En este formato de fecha SQL, el La columna HireDate se alimenta con los valores MM-DD-YYYY. Este no es un formato entero. Ejecutemos la misma consulta con el nuevo formato de fecha SQL del valor de entrada «12-07-2008» en la columna HireDate. Entonces, ejecutemos la siguiente consulta y verifiquemos el resultado. La salida es el mismo conjunto de cinco registros.
1234SELECCIONE HireDate, BusinessEntityID, LoginID, JobTitleFROM HumanResources.EmployeeDONDE HireDate = «12-07-2008»;GONota: Los valores del formato de idioma neutral son implícitos y SQL Server hará la conversión necesaria. Cualquier otro formato de fecha SQL requiere una conversión adecuada de operandos y / o valores.
Los siguientes ejemplos muestran un mensaje de error debido al uso incorrecto del formato de fecha SQL.
1
2
3
|
SELECCIONAR HireDate, BusinessEntityID, LoginID, JobTitle
FROM HumanResources.Employee
WHERE HireDate = «25-12-2008 «;
|
Ahora, el operando y sus valores se convierten a un formato estándar 103. Puede consultar aquí para obtener más información sobre las funciones CAST y Convertir.El siguiente ejemplo devuelve todas las filas del empleado donde HireDate 25-12-2008
Ahora vamos Empiece a echar un vistazo a algunas de las funciones de fecha que SQL Server pone a nuestra disposición y estas funciones de fecha nos permiten trabajar con las diferentes partes de las fechas e incluso manipular algunas de las funcionalidades con las que podemos trabajar en términos de fechas.
Veamos la función DATEPART SQL. Esta función devuelve un valor entero de la columna de fecha especificada
Consulta la columna HireDate para devolver solo la parte del año de la fecha
El siguiente ejemplo genera una columna de salida de entero llamada, y esta debe devolver solo los valores del año
1
2
3
|
SELECCIONAR PARTE DE DATOS (AÑO, Fecha de contratación) COMO
FROM HumanResources.Employee;
GO
|
Consultar la fecha de contratación columna para devolver solo la parte del mes de la fecha
El siguiente ejemplo genera una columna de salida de número entero nombrada, y esto debería devolver solo los valores del mes
1
2
|
SELECCIONAR DATEPART (MES, HireDate) COMO
FROM HumanResources.Employee;
|
Consulte la columna HireDate para devolver solo la parte del trimestre de la fecha
El siguiente ejemplo genera una columna de salida entera nombrada, y esto debería devolver solo los valores del mes
1
2
3
|
SELECT DATEPART (QUARTER, HireDate) COMO
FROM HumanResources.Employee;
GO
|
El siguiente ejemplo devuelve los detalles de ventas para el día específico del campo orderDate. El ejemplo también muestra el uso de la función SQL DATEPART y sus pocos argumentos asociados.
La instrucción SELECT selecciona DATEPART, que es el nombre de la función, y toma dos argumentos entre paréntesis. Primero, el argumento datepart y el segundo, la expresión de fecha.
Echemos un vistazo al uso de la función DATENAME SQL. Es similar a una función SQL DATEPART, pero devuelve una cadena de caracteres del campo de fecha especificado.
A continuación, echemos un vistazo a las funciones deterministas que devuelven partes de fecha y hora como un valor entero. El siguiente ejemplo devuelve valores enteros del campo OrderDate para las funciones correspondientes YEAR y MONTH.
El resultado es un valor agregado de TotalSales basado en las ventas mensuales.
Ahora veamos un vistazo a un par de otras funciones diferentes. Y este que vamos a ver se llama DATEDIFF. La función SQL DATEDIFF devuelve un valor entero con signo que nos permite determinar el tiempo transcurrido entre dos fechas.
Juguemos con la consulta para usar diferentes partes de fecha para ver los resultados.
El siguiente ejemplo devuelve las partes de tiempo entre los dos campos DateTime. En este ejemplo, las horas, los minutos y los segundos entre los valores de DateTime se calculan mediante la función DATEDIFF SQL
Cómo para utilizar la función SQL DATEDIFF en la cláusula where
El siguiente ejemplo devuelve todos los empleados que han trabajado con la organización durante más de 10 años. La lógica condicional en la columna HireDate se compara con más de 120 meses se menciona en la cláusula where.
1
2
3
4
|
SELECCIONAR *
FROM HumanResources.Employee
WHERE DATEDIFF (MES, HireDate, GETDATE ()) > 120;
GO
|
Cómo usar la función SQL DateDiff con una función Aggregate
El siguiente ejemplo devuelve el número de años entre la primera fecha de contratación y la última fecha de contratación. En este caso, buscamos la función agregada HireDate mínima y la máxima HireDate utilizada como parámetros de entrada para la función SQL DATEDIFF.Con estos valores, uno podría encontrar fácilmente la cantidad de años que existieron entre la primera contratación y la última contratación.
1
2
|
SELECT DATEDIFF (YEAR, MIN (HireDate), MAX (HireDate)) No_Of_Years
FROM HumanResources.Employee;
|
Echemos un vistazo a la función DATEADD SQL. Las funciones suman o restan el valor de la parte de fecha especificada y devuelven el valor modificado de la parte de fecha.
Veamos el siguiente ejemplo. El valor 1 se agrega a las distintas partes de fecha y el valor -1 se agrega a la parte de fecha de hora y -30 se agrega a la parte de fecha de minuto.
En la salida, podemos ver que el valor se opera en el Función GETDATE () según la parte de fecha definida.
Nota: Las funciones SQL DATEADD y DATEDIFF se pueden utilizar en SELECT, Cláusulas WHERE, HAVING, GROUP BY y ORDER BY.
Datadiff vs Datediff_BIG
Eso es todo por ahora en este artículo sobre formato de fecha SQL…
Resumen
Hasta ahora, hemos visto funciones de formato de fecha SQL muy importantes como DATEPART, DATENAME, YEAR, MONTH y DAY, con especial énfasis en la función DATEADD SQL y DATEDIFF SQL. Las funciones de formato de fecha SQL en el servidor SQL son realmente poderosas y realmente ayudan a brindar análisis e informes de datos impactantes. En algunos casos, se trata de ajustar la configuración de clasificación, la configuración de ubicación, simplemente reajustar el flujo de entrada del valor del texto o corregir la fuente de datos para resolver el problema de la fecha y la hora.
Se recomienda utilizar el formato de lenguaje neutro porque funciona mejor en la mayoría de los casos. Por último, vemos la diferencia entre la función DATEDIFF SQL y la función DATEDIFF_BIG SQL. Espero que les guste este artículo. Si tiene alguna pregunta, no dude en comentar a continuación
- Autor
- Publicaciones recientes
Mi especialidad radica en diseñar & implementando soluciones de alta disponibilidad y migración de bases de datos multiplataforma. Las tecnologías en las que se trabaja actualmente son SQL Server, PowerShell, Oracle y MongoDB.
Ver todas las publicaciones de Prashanth Jayaram
- Una descripción general rápida de la auditoría de bases de datos en SQL – 28 de enero de 2021
- Cómo configurar Azure Data Sync entre bases de datos de Azure SQL y SQL Server local – 20 de enero de 2021
- Cómo realizar operaciones de importación / exportación de bases de datos de Azure SQL con PowerShell – 14 de enero , 2021