En SQL Server, el T-SQL DATEPART()
La función devuelve un número entero que representa el datepart especificado. de la fecha especificada . Por ejemplo, puede pasar 2021-01-07
y hacer que SQL Server devuelva solo la parte del año (2021
).
También puede extraer la porción de tiempo. Por ejemplo, puede pasar 2018-06-02 08:24:14.3112042
y hacer que SQL Server devuelva solo la parte de la hora (8
).
Ejemplos a continuación.
Sintaxis
Primero, la sintaxis. El DATEPART()
la sintaxis es así:
DATEPART ( datepart , date )
Donde datepart
es la parte de date
(un valor de fecha u hora) para el que se devolverá un entero.
Ejemplo 1
Este es un ejemplo básico en el que devuelvo el componente del año de una fecha.
SELECT DATEPART(year, '2021-01-07') AS Result;
Resultado:
+----------+ | Result | |----------| | 2021 | +----------+
Ejemplo 2
En este ejemplo, asigno una fecha a una variable, luego uso varias instancias de DATEPART()
para recuperar diferentes partes de esa fecha.
DECLARE @date datetime2 = '2018-06-02 08:24:14.3112042'; SELECT DATEPART(year, @date) AS Year, DATEPART(quarter, @date) AS Quarter, DATEPART(month, @date) AS Month, DATEPART(dayofyear, @date) AS 'Day of Year', DATEPART(day, @date) AS Day, DATEPART(week, @date) AS Week, DATEPART(weekday, @date) AS Weekday;
Resultado:
+--------+-----------+---------+---------------+-------+--------+-----------+ | Year | Quarter | Month | Day of Year | Day | Week | Weekday | |--------+-----------+---------+---------------+-------+--------+-----------| | 2018 | 2 | 6 | 153 | 2 | 22 | 7 | +--------+-----------+---------+---------------+-------+--------+-----------+
Ejemplo 3
También puede recuperar las distintas partes de tiempo de la fecha.
DECLARE @date datetime2 = '2018-06-02 08:24:14.3112042'; SELECT DATEPART(hour, @date) AS Hour, DATEPART(minute, @date) AS Minute, DATEPART(second, @date) AS Second, DATEPART(millisecond, @date) AS Millsecond, DATEPART(microsecond, @date) AS Microsecond, DATEPART(nanosecond, @date) AS Nanosecond;
Resultado:
+--------+----------+----------+--------------+---------------+--------------+ | Hour | Minute | Second | Millsecond | Microsecond | Nanosecond | |--------+----------+----------+--------------+---------------+--------------| | 8 | 24 | 14 | 311 | 311204 | 311204200 | +--------+----------+----------+--------------+---------------+--------------+
Ejemplo 4
También puede recuperar el TZoffset
y la ISO_WEEK
partefecha.
El TZoffset
se devuelve como el número de minutos (con signo). La ISO_WEEK
datepart se refiere al sistema ISO semana-fecha (parte del estándar ISO 8601) que es un sistema de numeración de semanas.
DECLARE @date datetimeoffset = '2018-06-02 08:24:14.3112042 +08:00'; SELECT DATEPART(TZoffset, @date) AS 'Time Zone Offset', DATEPART(ISO_WEEK, @date) AS 'ISO_WEEK';
Resultado:
+--------------------+------------+ | Time Zone Offset | ISO_WEEK | |--------------------+------------| | 480 | 22 | +--------------------+------------+
En este ejemplo, configuré la fecha en un datetimeoffset
formato, que incluye el desplazamiento de la zona horaria. El TZoffset
se devuelve en minutos.
Una alternativa rápida
T-SQL también ofrece una forma más concisa de devolver los componentes de día, mes o año de una fecha con DAY()
, MONTH()
y YEAR()
funciones.
Funcionan así:
DECLARE @date datetime2 = '2018-06-02 08:24:14.3112042'; SELECT DAY(@date) AS DAY, MONTH(@date) AS MONTH, YEAR(@date) AS YEAR;
Resultado:
+-------+---------+--------+ | DAY | MONTH | YEAR | |-------+---------+--------| | 2 | 6 | 2018 | +-------+---------+--------+
Obtener el nombre del mes o el nombre del día
Si necesita obtener el nombre del mes o el nombre del día, use DATENAME()
función en su lugar. Esta función devuelve los resultados como una cadena de caracteres y puede devolver el mes y el día de la semana por nombre. Estos son algunos DATENAME()
ejemplos para demostrar lo que quiero decir.