Compartir a través de


DATEPART (Transact-SQL)

Devuelve un entero que representa el parámetro datepart especificado del parámetro date especificado.

Para obtener información general acerca de todos los tipos de datos y funciones de fecha y hora de Transact-SQL, consulte Tipos de datos y funciones de fecha y hora (Transact-SQL). Para obtener información y ejemplos que son comunes a los tipos de datos y funciones de fecha y hora, consulte Usar datos de fecha y hora.

Icono de vínculo a temasConvenciones de sintaxis de Transact-SQL

Sintaxis

DATEPART (datepart , date )

Argumentos

  • datepart
    Es la parte de date (una fecha u hora) para la que se devolverá un integer. En la siguiente tabla se recogen los argumentos válidos de datepart. Los equivalentes de variables definidas por el usuario no son válidos.

    datepart

    Abreviaturas

    year

    yy, yyyy

    quarter

    qq, q

    month

    mm, m

    dayofyear

    dy, y

    day

    dd, d

    week

    wk, ww

    weekday

    dw

    hour

    hh

    minute

    mi, n

    second

    ss, s

    millisecond

    ms

    microsecond

    mcs

    nanosecond

    ns

    TZoffset

    tz

    ISO_WEEK

    isowk, isoww

  • date
    Es una expresión que se puede resolver como un valor time, date, smalldatetime, datetime, datetime2 o datetimeoffset. date puede ser una expresión, una expresión de columna, una variable definida por el usuario o un literal de cadena.

    Para evitar la ambigüedad, utilice años de cuatro dígitos. Parta obtener información sobre los años de dos dígitos, consulte two digit year cutoff (opción).

Tipo devuelto

int

Valor devuelto

Cada datepart y sus abreviaturas devuelven el mismo valor.

El valor devuelto depende del entorno del idioma definido por SET LANGUAGE y el idioma predeterminado del inicio de sesión. Si date es un literal de cadena para algunos formatos, el valor devuelto depende del formato especificado mediante SET DATEFORMAT. SET DATEFORMAT no afecta al valor devuelto cuando la fecha es una expresión de columna de un tipo de datos de hora o fecha.

En la siguiente tabla se enumeran todos los argumentos datepart con los correspondientes valores devueltos para la instrucción SELECT DATEPART(datepart,'2007-10-30 12:15:32.1234567 +05:10'). El tipo de datos del argumento date es datetimeoffset(7). El valor devuelto datepartnanosecond tiene una escala de 9 (.123456700) y las dos últimas posiciones son siempre 00.

datepart

Valor devuelto

year, yyyy, yy

2007

quarter, qq, q

4

month, mm, m

10

dayofyear, dy, y

303

day, dd, d

30

week, wk, ww

45

weekday, dw

1

hour, hh

12

minute, n

15

second, ss, s

32

millisecond, ms

123

microsecond, mcs

123456

nanosecond, ns

123456700

TZoffset, tz

310

Argumentos de la parte de fecha week y weekday

Si datepart es week (wk, ww) o weekday (dw), el valor devuelto depende del valor que se ha definido mediante SET DATEFIRST.

El 1 de enero de cualquier año define el número inicial de week para datepart; por ejemplo: DATEPART (wk, 'Jan 1, xxxx') = 1, donde xxxx es cualquier año.

En la tabla siguiente se enumeran los valores devueltos para week y weekdaydatepart para '2007-04-21 ' para cada argumento SET DATEFIRST. El 1 de enero es domingo en el año 2007. El 21 de abril es sábado en el año 2007. El valor predeterminado para inglés de EE.UU. es SET DATEFIRST 7, Sunday.

SET DATEFIRST

argumento

week

devuelto

weekday

devuelto

1

16

6

2

17

5

3

17

4

4

17

3

5

17

2

6

17

1

7

16

7

Argumentos de datepart year, month y day

Los valores devueltos mediante DATEPART (year, date), DATEPART (month, date) y DATEPART (day, date) son los mismos que los que devuelven las funciones YEAR, MONTH y DAY, f respectivamente.

ISO_WEEK datepart

ISO 8601 incluye el sistema ISO de fecha-semana, un sistema de numeración para las semanas. Cada semana se asocia al año en el que cae el jueves. Por ejemplo, la semana 1 de 2004 (2004W01) abarca del lunes 29 de diciembre de 2003 al domingo 4 de enero de 2004. El número de semana más alto en un año puede ser 52 o 53. Este estilo de numeración se utiliza normalmente en los países europeos, y es poco frecuente en otros países.

Es posible que el sistema de numeración usado en varios países no se ajuste a las normas ISO. Existen por lo menos seis posibilidades, como se muestra en la tabla siguiente

Primer día de la semana

La primera semana del año contiene

Semanas asignadas dos veces

Usado por/en

Domingo

1 de enero,

El primer sábado,

1–7 días del año

Estados Unidos

Lunes

1 de enero,

El primer domingo,

1–7 días del año

La mayoría de los países europeos y Reino Unido

Lunes

4 de enero,

El primer jueves,

4–7 días del año

No

ISO 8601, Noruega y Suecia

Lunes

7 de enero,

El primer lunes,

7 días del año

No

Miércoles

1 de enero,

El primer martes,

1–7 días del año

Sábado

1 de enero,

El primer viernes,

1–7 días del año

TZoffset

TZoffset (tz) se devuelve como el número de minutos (con signo). La instrucción siguiente devuelve un desfase de zona horaria de 310 minutos.

SELECT DATEPART (TZoffset, 2007-05-10  00:00:01.1234567 +05:10);

Si el argumento datepart es TZoffset (tz) y el argumento date no es un tipo de datos datetimeoffset, se devolverá NULL.

Argumento date smalldatetime

Si date es smalldatetime, los segundos se devuelven como 00.

Valor predeterminado devuelto por una parte de fecha que no se encuentra en un argumento date

Si el tipo de datos del argumento date no contiene la datepart especificada, se devolverá el valor predeterminado de datepart.

Por ejemplo, el valor predeterminado de año-mes-día de cualquier tipo de datos date es 1900-01-01. La instrucción siguiente tiene argumentos de la parte de fecha para datepart, un argumento de hora para date y devuelve 1900, 1, 1, 1, 2.

SELECT DATEPART(year, '12:10:30.123')
    ,DATEPART(month, '12:10:30.123')
    ,DATEPART(day, '12:10:30.123')
    ,DATEPART(dayofyear, '12:10:30.123')
    ,DATEPART(weekday, '12:10:30.123');

El valor predeterminado hora-minuto-segundo para el tipo de datos time es 00:00:00. La instrucción siguiente tiene argumentos de la parte de hora para datepart, un argumento de fecha para date y devuelve 0, 0, 0.

SELECT DATEPART(hour, '2007-06-01')
    ,DATEPART(minute, '2007-06-01')
    ,DATEPART(second, '2007-06-01');

Fracciones de segundo

Las fracciones de segundo se devuelven como se indica en la instrucción siguiente:

SELECT DATEPART(millisecond, '00:00:01.1234567'); -- Returns 123
SELECT DATEPART(microsecond, '00:00:01.1234567'); -- Returns 123456
SELECT DATEPART(nanosecond,  '00:00:01.1234567'); -- Returns 123456700

Notas

Se puede utilizar DATEPART en las cláusulas de lista de selección, WHERE, HAVING, GROUP BY y ORDER BY. En SQL Server 2008, DATEPART convierte implícitamente los literales de cadena como tipos datetime2. Cuando utilice DATEPART con DATEADD, evite las conversiones implícitas de literales de cadena. Para obtener más información, vea DATEADD (Transact-SQL).

Ejemplos

En el ejemplo siguiente se devuelve el año de base. El año de base es útil para calcular fechas. En el ejemplo siguiente, la fecha se especifica como un número. Observe que SQL Server interpreta 0 como el 1 de enero de 1900. 

SELECT DATEPART(year, 0), DATEPART(month, 0), DATEPART(day, 0);
-- Returns: 1900    1    1 */

Vea también

Referencia