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.