SQL - Funciones de fecha

La siguiente tabla tiene una lista de todas las funciones importantes relacionadas con la fecha y la hora disponibles a través de SQL. Hay varias otras funciones compatibles con su RDBMS. La lista dada se basa en MySQL RDBMS.

No Señor. Función descriptiva
1 AGREGAR ()

Agrega fechas

2 AGREGAR TIEMPO()

Agrega tiempo

3 CONVERT_TZ ()

Convierte de una zona horaria a otra

4 CURDATE ()

Devuelve la fecha actual

5 CURRENT_DATE (), CURRENT_DATE

Sinónimos de CURDATE ()

6 CURRENT_TIME (), CURRENT_TIME

Sinónimos de CURTIME ()

7 CURRENT_TIMESTAMP (), CURRENT_TIMESTAMP

Sinónimos de AHORA ()

8 CURTIME ()

Devuelve la hora actual

9 DATE_ADD ()

Agrega dos fechas

10 FORMATO DE FECHA()

Formatea la fecha según lo especificado

11 DATE_SUB ()

Resta dos fechas

12 FECHA()

Extrae la parte de fecha de una expresión de fecha o fecha y hora

13 DATEDIFF ()

Resta dos fechas

14 DÍA()

Sinónimo de DAYOFMONTH ()

15 DAYNAME ()

Devuelve el nombre del día de la semana.

dieciséis DIA DEL MES()

Devuelve el día del mes (1-31)

17 DÍA DE LA SEMANA()

Devuelve el índice de día de la semana del argumento.

18 DAYOFYEAR ()

Devuelve el día del año (1-366)

19 EXTRAER

Extrae parte de una fecha

20 FROM_DAYS ()

Convierte un número de día en una fecha

21 FROM_UNIXTIME ()

Formatea la fecha como una marca de tiempo UNIX

22 HORA()

Extrae la hora

23 ÚLTIMO DÍA

Devuelve el último día del mes para el argumento.

24 LOCALTIME (), LOCALTIME

Sinónimo de NOW ()

25 LOCALTIMESTAMP, LOCALTIMESTAMP ()

Sinónimo de NOW ()

26 MAKEDATE ()

Crea una fecha a partir del año y el día del año.

27 HACER TIEMPO

HACER TIEMPO()

28 MICROSEGUNDO()

Devuelve los microsegundos del argumento

29 MINUTO()

Devuelve el minuto del argumento.

30 MES()

Devuelve el mes desde la fecha pasada

31 MONTHNAME ()

Devuelve el nombre del mes

32 AHORA()

Devuelve la fecha y hora actuales

33 PERIOD_ADD ()

Agrega un período a un año-mes

34 PERIOD_DIFF ()

Devuelve el número de meses entre períodos.

35 TRIMESTRE()

Devuelve el trimestre a partir de un argumento de fecha.

36 SEC_TO_TIME ()

Convierte los segundos al formato 'HH: MM: SS'

37 SEGUNDO()

Devuelve el segundo (0-59)

38 STR_TO_DATE ()

Convierte una cadena en una fecha

39 SUBDATE ()

Cuando se invoca con tres argumentos, un sinónimo de DATE_SUB ()

40 SUBTIME ()

Resta tiempos

41 SYSDATE ()

Devuelve la hora a la que se ejecuta la función.

42 FORMATO DE TIEMPO()

Formatos como tiempo

43 TIME_TO_SEC ()

Devuelve el argumento convertido a segundos.

44 HORA()

Extrae la parte de tiempo de la expresión pasada

45 TIMEDIFF ()

Resta tiempo

46 TIMESTAMP ()

Con un solo argumento, esta función devuelve la fecha o la expresión de fecha y hora. Con dos argumentos, la suma de los argumentos

47 TIMESTAMPADD ()

Agrega un intervalo a una expresión de fecha y hora

48 TIMESTAMPDIFF ()

Resta un intervalo de una expresión de fecha y hora

49 TO_DAYS ()

Devuelve el argumento de fecha convertido a días.

50 UNIX_TIMESTAMP ()

Devuelve una marca de tiempo UNIX

51 UTC_DATE ()

Devuelve la fecha UTC actual

52 UTC_TIME ()

Devuelve la hora UTC actual

53 UTC_TIMESTAMP ()

Devuelve la fecha y hora UTC actual

54 SEMANA()

Devuelve el número de la semana

55 DÍA LABORABLE()

Devuelve el índice de días de la semana.

56 WEEKOFYEAR ()

Devuelve la semana calendario de la fecha (1-53)

57 AÑO()

Devuelve el año

58 SEMANA AÑO ()

Devuelve el año y la semana

ADDDATE (fecha, INTERVAL expr unidad), ADDDATE (expr, días)

Cuando se invoca con la forma INTERVALO del segundo argumento, ADDDATE () es un sinónimo de DATE_ADD (). La función relacionada SUBDATE () es sinónimo de DATE_SUB (). Para obtener información sobre el argumento de la unidad INTERVAL, consulte la discusión sobre DATE_ADD ().

mysql> SELECT DATE_ADD('1998-01-02', INTERVAL 31 DAY);
+---------------------------------------------------------+
| DATE_ADD('1998-01-02', INTERVAL 31 DAY)                 |
+---------------------------------------------------------+
| 1998-02-02                                              |
+---------------------------------------------------------+
1 row in set (0.00 sec)

mysql> SELECT ADDDATE('1998-01-02', INTERVAL 31 DAY);
+---------------------------------------------------------+
| ADDDATE('1998-01-02', INTERVAL 31 DAY)                  |
+---------------------------------------------------------+
| 1998-02-02                                              |
+---------------------------------------------------------+
1 row in set (0.00 sec)

Cuando se invoca con la forma de días del segundo argumento, MySQL lo trata como un número entero de días que se agregarán a expr.

mysql> SELECT ADDDATE('1998-01-02', 31);
+---------------------------------------------------------+
| DATE_ADD('1998-01-02', INTERVAL 31 DAY)                 |
+---------------------------------------------------------+
| 1998-02-02                                              |
+---------------------------------------------------------+
1 row in set (0.00 sec)

ADDTIME (expr1, expr2)

ADDTIME () agrega expr2 a expr1 y devuelve el resultado. Expr1 es una expresión de hora o fecha y hora, mientras que expr2 es una expresión de hora.

mysql> SELECT ADDTIME('1997-12-31 23:59:59.999999','1 1:1:1.000002');
+---------------------------------------------------------+
| DATE_ADD('1997-12-31 23:59:59.999999','1 1:1:1.000002') |
+---------------------------------------------------------+
| 1998-01-02 01:01:01.000001                              |
+---------------------------------------------------------+
1 row in set (0.00 sec)

CONVERT_TZ (dt, from_tz, to_tz)

Esto convierte un valor de fecha y hora dt de la zona horaria dada por from_tz a la zona horaria dada por to_tz y devuelve el valor resultante. Esta función devuelve NULL si los argumentos no son válidos.

mysql> SELECT CONVERT_TZ('2004-01-01 12:00:00','GMT','MET');
+---------------------------------------------------------+
| CONVERT_TZ('2004-01-01 12:00:00','GMT','MET')           |
+---------------------------------------------------------+
| 2004-01-01 13:00:00                                     |
+---------------------------------------------------------+
1 row in set (0.00 sec)

mysql> SELECT CONVERT_TZ('2004-01-01 12:00:00','+00:00','+10:00');
+---------------------------------------------------------+
| CONVERT_TZ('2004-01-01 12:00:00','+00:00','+10:00')     |
+---------------------------------------------------------+
| 2004-01-01 22:00:00                                     |
+---------------------------------------------------------+
1 row in set (0.00 sec)

CURDATE ()

Devuelve la fecha actual como un valor en formato 'AAAA-MM-DD' o AAAAMMDD, dependiendo de si la función se usa en una cadena o en un contexto numérico.

mysql> SELECT CURDATE();
+---------------------------------------------------------+
| CURDATE()                                               |
+---------------------------------------------------------+
| 1997-12-15                                              |
+---------------------------------------------------------+
1 row in set (0.00 sec)

mysql> SELECT CURDATE() + 0;
+---------------------------------------------------------+
| CURDATE() + 0                                           |
+---------------------------------------------------------+
| 19971215                                                |
+---------------------------------------------------------+
1 row in set (0.00 sec)

CURRENT_DATE y CURRENT_DATE ()

CURRENT_DATE y CURRENT_DATE () son sinónimos de CURDATE ()

CURTIME ()

Devuelve la hora actual como un valor en formato 'HH: MM: SS' o HHMMSS, dependiendo de si la función se usa en una cadena o en un contexto numérico. El valor se expresa en la zona horaria actual.

mysql> SELECT CURTIME();
+---------------------------------------------------------+
| CURTIME()                                               |
+---------------------------------------------------------+
| 23:50:26                                                |
+---------------------------------------------------------+
1 row in set (0.00 sec)

mysql> SELECT CURTIME() + 0;
+---------------------------------------------------------+
| CURTIME() + 0                                           |
+---------------------------------------------------------+
| 235026                                                  |
+---------------------------------------------------------+
1 row in set (0.00 sec)

CURRENT_TIME y CURRENT_TIME ()

CURRENT_TIME y CURRENT_TIME () son sinónimos de CURTIME ().

CURRENT_TIMESTAMP y CURRENT_TIMESTAMP ()

CURRENT_TIMESTAMP y CURRENT_TIMESTAMP () son sinónimos de NOW ().

FECHA (expr)

Extrae la parte de fecha de la expresión de fecha o fecha y hora expr.

mysql> SELECT DATE('2003-12-31 01:02:03');
+---------------------------------------------------------+
| DATE('2003-12-31 01:02:03')                             |
+---------------------------------------------------------+
|  2003-12-31                                             |
+---------------------------------------------------------+
1 row in set (0.00 sec)

DATEDIFF (expr1, expr2)

DATEDIFF () devuelve expr1. expr2 expresado como un valor en días de una fecha a la otra. Tanto expr1 como expr2 son expresiones de fecha o de fecha y hora. En el cálculo solo se utilizan las partes de fecha de los valores.

mysql> SELECT DATEDIFF('1997-12-31 23:59:59','1997-12-30');
+---------------------------------------------------------+
| DATEDIFF('1997-12-31 23:59:59','1997-12-30')            |
+---------------------------------------------------------+
| 1                                                       |
+---------------------------------------------------------+
1 row in set (0.00 sec)

DATE_ADD (fecha, INTERVAL unidad expr), DATE_SUB (fecha, INTERVAL unidad expr)

Estas funciones realizan aritmética de fechas. losdatees un valor DATETIME o DATE que especifica la fecha de inicio. losexpres una expresión que especifica el valor del intervalo que se sumará o restará de la fecha de inicio. El expr es una cadena; puede comenzar con un '-' para intervalos negativos.

UN unit es una palabra clave que indica las unidades en las que se debe interpretar la expresión.

los INTERVAL La palabra clave y el especificador de unidad no distinguen entre mayúsculas y minúsculas.

La siguiente tabla muestra la forma esperada del argumento expr para cada valor unitario.

valor unitario ExprFormat esperado
MICROSEGUNDO MICROSECONDS
SEGUNDO SEGUNDOS
MINUTO MINUTOS
HORA HORAS
DÍA DIAS
SEMANA SEMANAS
MES MESES
TRIMESTRE CUARTELES
AÑO AÑOS
SECOND_MICROSECOND 'SECONDS.MICROSECONDS'
MINUTE_MICROSECOND 'MINUTOS.MICROSECONDS'
MINUTE_SECOND 'MINUTOS: SEGUNDOS'
HOUR_MICROSECOND 'HORAS.MICROSECONDOS'
HOUR_SECOND 'HORAS: MINUTOS: SEGUNDOS'
HOUR_MINUTE 'HORAS: MINUTOS'
DAY_MICROSECOND 'DÍAS.MICROSECONDS'
DAY_SECOND 'DAYS HOURS: MINUTES: SECONDS'
DAY_MINUTE 'DÍAS HORAS: MINUTOS'
DAY_HOUR 'DÍAS HORAS'
AÑO MES 'AÑOS-MESES'

Los valores QUARTER y WEEKestán disponibles en MySQL 5.0.0. versión.

mysql> SELECT DATE_ADD('1997-12-31 23:59:59', 
   -> INTERVAL '1:1' MINUTE_SECOND);
+---------------------------------------------------------+
| DATE_ADD('1997-12-31 23:59:59', INTERVAL...             |
+---------------------------------------------------------+
| 1998-01-01 00:01:00                                     |
+---------------------------------------------------------+
1 row in set (0.00 sec)

mysql> SELECT DATE_ADD('1999-01-01', INTERVAL 1 HOUR);
+---------------------------------------------------------+
| DATE_ADD('1999-01-01', INTERVAL 1 HOUR)                 |
+---------------------------------------------------------+
| 1999-01-01 01:00:00                                     |
+---------------------------------------------------------+
1 row in set (0.00 sec)

DATE_FORMAT (fecha, formato)

Este comando formatea el valor de la fecha según la cadena de formato.

Los siguientes especificadores pueden usarse en la cadena de formato. El carácter '%' es obligatorio antes de los caracteres del especificador de formato.

No Señor. Especificador y descripción
1

%a

Nombre abreviado del día de la semana (dom .. sábado)

2

%b

Nombre del mes abreviado (enero, diciembre)

3

%c

Mes, numérico (0..12)

4

%D

Día del mes con sufijo en inglés (0, 1, 2, 3,.)

5

%d

Día del mes, numérico (00..31)

6

%e

Día del mes, numérico (0..31)

7

%f

Microsegundos (000000..999999)

8

%H

Hora (00..23)

9

%h

Hora (01..12)

10

%I

Hora (01..12)

11

%i

Minutos, numéricos (00..59)

12

%j

Día del año (001..366)

13

%k

Hora (0..23)

14

%l

Hora (1..12)

15

%M

Nombre del mes (enero ... diciembre)

dieciséis

%m

Mes, numérico (00..12)

17

%p

Am o PM

18

%r

Hora, 12 horas (hh: mm: ss seguido de AM o PM)

19

%S

Segundos (00..59)

20

%s

Segundos (00..59)

21

%T

Hora, 24 horas (hh: mm: ss)

22

%U

Semana (00..53), donde el domingo es el primer día de la semana

23

%u

Semana (00..53), donde el lunes es el primer día de la semana

24

%V

Semana (01..53), donde el domingo es el primer día de la semana; usado con% X

25

%v

Semana (01..53), donde el lunes es el primer día de la semana; usado con% x

26

%W

Nombre del día de la semana (domingo ... sábado)

27

%w

Día de la semana (0 = domingo..6 = sábado)

28

%X

Año de la semana donde el domingo es el primer día de la semana, numérico, cuatro dígitos; usado con% V

29

%x

Año de la semana, donde el lunes es el primer día de la semana, numérico, cuatro dígitos; usado con% v

30

%Y

Año, numérico, cuatro dígitos

31

%y

Año, numérico (dos dígitos)

32

%%

Un.% Literal. personaje

33

%x

x, para cualquier.x. no enumerado arriba

mysql> SELECT DATE_FORMAT('1997-10-04 22:23:00', '%W %M %Y');
+---------------------------------------------------------+
| DATE_FORMAT('1997-10-04 22:23:00', '%W %M %Y')          |
+---------------------------------------------------------+
| Saturday October 1997                                   |
+---------------------------------------------------------+
1 row in set (0.00 sec)

mysql> SELECT DATE_FORMAT('1997-10-04 22:23:00'
   -> '%H %k %I %r %T %S %w');
+---------------------------------------------------------+
| DATE_FORMAT('1997-10-04 22:23:00.......                 |
+---------------------------------------------------------+
|  22 22 10 10:23:00 PM 22:23:00 00 6                     |
+---------------------------------------------------------+
1 row in set (0.00 sec)

DATE_SUB (fecha, INTERVAL expr unidad)

Esto es similar a la función DATE_ADD ().

DÍA (fecha)

DAY () es un sinónimo de la función DAYOFMONTH ().

DAYNAME (fecha)

Devuelve el nombre del día de la semana para la fecha.

mysql> SELECT DAYNAME('1998-02-05');
+---------------------------------------------------------+
| DAYNAME('1998-02-05')                                   |
+---------------------------------------------------------+
| Thursday                                                |
+---------------------------------------------------------+
1 row in set (0.00 sec)

DAYOFMONTH (fecha)

Devuelve el día del mes para la fecha, en el rango de 0 a 31.

mysql> SELECT DAYOFMONTH('1998-02-03');
+---------------------------------------------------------+
| DAYOFMONTH('1998-02-03')                                |
+---------------------------------------------------------+
| 3                                                       |
+---------------------------------------------------------+
1 row in set (0.00 sec)

DAYOFWEEK (fecha)

Devuelve el índice de días de la semana para la fecha (1 = domingo, 2 = lunes,., 7 = sábado). Estos valores de índice corresponden al estándar ODBC.

mysql> SELECT DAYOFWEEK('1998-02-03');
+---------------------------------------------------------+
|DAYOFWEEK('1998-02-03')                                  |
+---------------------------------------------------------+
| 3                                                       |
+---------------------------------------------------------+
1 row in set (0.00 sec)

DAYOFYEAR (fecha)

Devuelve el día del año para la fecha, en el rango de 1 a 366.

mysql> SELECT DAYOFYEAR('1998-02-03');
+---------------------------------------------------------+
| DAYOFYEAR('1998-02-03')                                 |
+---------------------------------------------------------+
| 34                                                      |
+---------------------------------------------------------+
1 row in set (0.00 sec)

EXTRACTO (unidad DESDE la fecha)

La función EXTRACT () usa los mismos tipos de especificadores de unidad que DATE_ADD () o DATE_SUB (), pero extrae partes de la fecha en lugar de realizar operaciones aritméticas de fechas.

mysql> SELECT EXTRACT(YEAR FROM '1999-07-02');
+---------------------------------------------------------+
| EXTRACT(YEAR FROM '1999-07-02')                         |
+---------------------------------------------------------+
| 1999                                                    |
+---------------------------------------------------------+
1 row in set (0.00 sec)

mysql> SELECT EXTRACT(YEAR_MONTH FROM '1999-07-02 01:02:03');
+---------------------------------------------------------+
| EXTRACT(YEAR_MONTH FROM '1999-07-02 01:02:03')          |
+---------------------------------------------------------+
| 199907                                                  |
+---------------------------------------------------------+
1 row in set (0.00 sec)

FROM_DAYS (N)

Dado un número de día N, devuelve un valor de FECHA.

mysql> SELECT FROM_DAYS(729669);
+---------------------------------------------------------+
| FROM_DAYS(729669)                                       |
+---------------------------------------------------------+
| 1997-10-07                                              |
+---------------------------------------------------------+
1 row in set (0.00 sec)

Note- Utilice FROM_DAYS () con precaución en fechas antiguas. No está diseñado para usarse con valores que preceden a la llegada del calendario gregoriano (1582).

FROM_UNIXTIME (unix_timestamp)

FROM_UNIXTIME (unix_timestamp, formato)

Devuelve una representación del unix_timestampargumento como un valor en formato 'AAAA-MM-DD HH: MM: SS o AAAAMMDDHHMMSS, dependiendo de si la función se usa en una cadena o en un contexto numérico. El valor se expresa en la zona horaria actual. El argumento unix_timestamp es un valor de marca de tiempo interno, que son producidos por elUNIX_TIMESTAMP() función.

Si se proporciona el formato, el resultado se formatea de acuerdo con la cadena de formato, que se utiliza de la misma manera que se enumera en la entrada para el DATE_FORMAT() función.

mysql> SELECT FROM_UNIXTIME(875996580);
+---------------------------------------------------------+
| FROM_UNIXTIME(875996580)                                |
+---------------------------------------------------------+
| 1997-10-04 22:23:00                                     |
+---------------------------------------------------------+
1 row in set (0.00 sec)

HORA (hora)

Devuelve la hora por tiempo. El rango del valor de retorno es de 0 a 23 para los valores de hora del día. Sin embargo, el rango de valores de TIME en realidad es mucho mayor, por lo que HOUR puede devolver valores superiores a 23.

mysql> SELECT HOUR('10:05:03');
+---------------------------------------------------------+
| HOUR('10:05:03')                                        |
+---------------------------------------------------------+
| 10                                                      |
+---------------------------------------------------------+
1 row in set (0.00 sec)

LAST_DAY (fecha)

Toma un valor de fecha o fecha y hora y devuelve el valor correspondiente para el último día del mes. Devuelve NULL si el argumento no es válido.

mysql> SELECT LAST_DAY('2003-02-05');
+---------------------------------------------------------+
| LAST_DAY('2003-02-05')                                  |
+---------------------------------------------------------+
| 2003-02-28                                              |
+---------------------------------------------------------+
1 row in set (0.00 sec)

LOCALTIME y LOCALTIME ()

LOCALTIME y LOCALTIME () son sinónimos de NOW ().

LOCALTIMESTAMP y LOCALTIMESTAMP ()

LOCALTIMESTAMP y LOCALTIMESTAMP () son sinónimos de NOW ().

MAKEDATE (año, día del año)

Devuelve una fecha, valores de año y día del año dados. El valor del día del año debe ser mayor que 0 o el resultado será NULO.

mysql> SELECT MAKEDATE(2001,31), MAKEDATE(2001,32);
+---------------------------------------------------------+
| MAKEDATE(2001,31), MAKEDATE(2001,32)                    |
+---------------------------------------------------------+
| '2001-01-31', '2001-02-01'                              |
+---------------------------------------------------------+
1 row in set (0.00 sec)

MAKETIME (hora, minuto, segundo)

Devuelve un valor de tiempo calculado a partir de los argumentos de hora, minuto y segundo.

mysql> SELECT MAKETIME(12,15,30);
+---------------------------------------------------------+
| MAKETIME(12,15,30)                                      |
+---------------------------------------------------------+
| '12:15:30'                                              |
+---------------------------------------------------------+
1 row in set (0.00 sec)

MICROSEGUNDO (expr)

Devuelve los microsegundos de la expresión de hora o fecha y hora (expr) como un número en el rango de 0 a 999999.

mysql> SELECT MICROSECOND('12:00:00.123456');
+---------------------------------------------------------+
| MICROSECOND('12:00:00.123456')                          |
+---------------------------------------------------------+
| 123456                                                  |
+---------------------------------------------------------+
1 row in set (0.00 sec)

MINUTE (hora)

Devuelve el minuto para el tiempo, en el rango de 0 a 59.

mysql> SELECT MINUTE('98-02-03 10:05:03');
+---------------------------------------------------------+
| MINUTE('98-02-03 10:05:03')                             |
+---------------------------------------------------------+
| 5                                                       |
+---------------------------------------------------------+
1 row in set (0.00 sec)

MES (fecha)

Devuelve el mes para la fecha, en el rango de 0 a 12.

mysql> SELECT MONTH('1998-02-03')
+---------------------------------------------------------+
| MONTH('1998-02-03')                                     |
+---------------------------------------------------------+
| 2                                                       |
+---------------------------------------------------------+
1 row in set (0.00 sec)

MONTHNAME (fecha)

Devuelve el nombre completo del mes para una fecha.

mysql> SELECT MONTHNAME('1998-02-05');
+---------------------------------------------------------+
| MONTHNAME('1998-02-05')                                 |
+---------------------------------------------------------+
| February                                                |
+---------------------------------------------------------+
1 row in set (0.00 sec)

AHORA()

Devuelve la fecha y hora actuales como un valor en formato 'AAAA-MM-DD HH: MM: SS' o AAAAMMDDHHMMSS, dependiendo de si la función se utiliza en una cadena o en un contexto numérico. Este valor se expresa en la zona horaria actual.

mysql> SELECT NOW();
+---------------------------------------------------------+
| NOW()                                                   |
+---------------------------------------------------------+
| 1997-12-15 23:50:26                                     |
+---------------------------------------------------------+
1 row in set (0.00 sec)

PERIOD_ADD (P, N)

Agrega N meses a un período P (en el formato YYMM o YYYYMM). Devuelve un valor con el formato AAAAMM. Tenga en cuenta que el argumento del período P no es un valor de fecha.

mysql> SELECT PERIOD_ADD(9801,2);
+---------------------------------------------------------+
| PERIOD_ADD(9801,2)                                      |
+---------------------------------------------------------+
| 199803                                                  |
+---------------------------------------------------------+
1 row in set (0.00 sec)

PERIOD_DIFF (P1, P2)

Devuelve el número de meses entre los períodos P1 y P2. Estos períodos P1 y P2 deben tener el formato YYMM o YYYYMM. Tenga en cuenta que los argumentos de período P1 y P2 no son valores de fecha.

mysql> SELECT PERIOD_DIFF(9802,199703);
+---------------------------------------------------------+
| PERIOD_DIFF(9802,199703)                                |
+---------------------------------------------------------+
| 11                                                      |
+---------------------------------------------------------+
1 row in set (0.00 sec)

TRIMESTRE (fecha)

Devuelve el trimestre del año para la fecha, en el rango de 1 a 4.

mysql> SELECT QUARTER('98-04-01');
+---------------------------------------------------------+
| QUARTER('98-04-01')                                     |
+---------------------------------------------------------+
| 2                                                       |
+---------------------------------------------------------+
1 row in set (0.00 sec)

Segunda vez)

Devuelve el segundo para el tiempo, en el rango de 0 a 59.

mysql> SELECT SECOND('10:05:03');
+---------------------------------------------------------+
| SECOND('10:05:03')                                      |
+---------------------------------------------------------+
| 3                                                       |
+---------------------------------------------------------+
1 row in set (0.00 sec)

SEC_TO_TIME (segundos)

Devuelve el argumento de segundos, convertido a horas, minutos y segundos, como un valor en formato 'HH: MM: SS' o HHMMSS, dependiendo de si la función se usa en una cadena o en un contexto numérico.

mysql> SELECT SEC_TO_TIME(2378);
+---------------------------------------------------------+
| SEC_TO_TIME(2378)                                       |
+---------------------------------------------------------+
| 00:39:38                                                |
+---------------------------------------------------------+
1 row in set (0.00 sec)

STR_TO_DATE (str, formato)

Esta es la inversa de la función DATE_FORMAT (). Toma una cadena str y un formato de cadena de formato. La función STR_TO_DATE () devuelve un valor DATETIME si la cadena de formato contiene partes de fecha y hora. De lo contrario, devuelve un valor de FECHA o HORA si la cadena contiene solo partes de fecha u hora.

mysql> SELECT STR_TO_DATE('04/31/2004', '%m/%d/%Y');
+---------------------------------------------------------+
| STR_TO_DATE('04/31/2004', '%m/%d/%Y')                   |
+---------------------------------------------------------+
| 2004-04-31                                              |
+---------------------------------------------------------+
1 row in set (0.00 sec)

SUBDATE (fecha, INTERVAL expr unidad) y SUBDATE (expr, días)

Cuando se invoca con la forma INTERVALO del segundo argumento, SUBDATE () es un sinónimo de DATE_SUB (). Para obtener información sobre el argumento de la unidad INTERVAL, consulte la discusión sobre DATE_ADD ().

mysql> SELECT DATE_SUB('1998-01-02', INTERVAL 31 DAY);
+---------------------------------------------------------+
| DATE_SUB('1998-01-02', INTERVAL 31 DAY)                 |
+---------------------------------------------------------+
| 1997-12-02                                              |
+---------------------------------------------------------+
1 row in set (0.00 sec)

mysql> SELECT SUBDATE('1998-01-02', INTERVAL 31 DAY);
+---------------------------------------------------------+
| SUBDATE('1998-01-02', INTERVAL 31 DAY)                  |
+---------------------------------------------------------+
| 1997-12-02                                              |
+---------------------------------------------------------+
1 row in set (0.00 sec)

SUBTIME (expr1, expr2)

La función SUBTIME () devuelve expr1. expr2 expresado como un valor en el mismo formato que expr1. El valor expr1 es una expresión de hora o fecha y hora, mientras que el valor expr2 es una expresión de hora.

mysql> SELECT SUBTIME('1997-12-31 23:59:59.999999',
   -> '1 1:1:1.000002');
+---------------------------------------------------------+
| SUBTIME('1997-12-31 23:59:59.999999'...                 |
+---------------------------------------------------------+
| 1997-12-30 22:58:58.999997                              |
+---------------------------------------------------------+
1 row in set (0.00 sec)

SYSDATE ()

Devuelve la fecha y hora actuales como un valor en formato 'AAAA-MM-DD HH: MM: SS' o AAAAMMDDHHMMSS, dependiendo de si la función se usa en una cadena o en un contexto numérico.

mysql> SELECT SYSDATE();
+---------------------------------------------------------+
| SYSDATE()                                               |
+---------------------------------------------------------+
| 2006-04-12 13:47:44                                     |
+---------------------------------------------------------+
1 row in set (0.00 sec)

TIEMPO (expr)

Extrae la parte de tiempo de la expresión de hora o fecha y hora expr y lo devuelve como una cadena.

mysql> SELECT TIME('2003-12-31 01:02:03');
+---------------------------------------------------------+
| TIME('2003-12-31 01:02:03')                             |
+---------------------------------------------------------+
| 01:02:03                                                |
+---------------------------------------------------------+
1 row in set (0.00 sec)

TIMEDIFF (expr1, expr2)

La función TIMEDIFF () devuelve expr1. expr2 expresado como valor de tiempo. Estos valores expr1 y expr2 son expresiones de hora o fecha y hora, pero ambas deben ser del mismo tipo.

mysql> SELECT TIMEDIFF('1997-12-31 23:59:59.000001',
   -> '1997-12-30 01:01:01.000002');
+---------------------------------------------------------+
| TIMEDIFF('1997-12-31 23:59:59.000001'.....              |
+---------------------------------------------------------+
|  46:58:57.999999                                        |
+---------------------------------------------------------+
1 row in set (0.00 sec)

TIMESTAMP (expr), TIMESTAMP (expr1, expr2)

Con un solo argumento, esta función devuelve la expresión de fecha o fecha y hora expr como un valor de fecha y hora. Con dos argumentos, agrega la expresión de tiempo expr2 a la expresión de fecha o fecha y horaexpr1 y devuelve el resultado como un valor de fecha y hora.

mysql> SELECT TIMESTAMP('2003-12-31');
+---------------------------------------------------------+
| TIMESTAMP('2003-12-31')                                 |
+---------------------------------------------------------+
| 2003-12-31 00:00:00                                     |
+---------------------------------------------------------+
1 row in set (0.00 sec)

TIMESTAMPADD (unidad, intervalo, datetime_expr)

Esta función agrega el intervalo de expresión entera a la expresión de fecha o fecha y hora datetime_expr. La unidad para el intervalo viene dada por el argumento de la unidad, que debe ser uno de los siguientes valores:

  • FRAC_SECOND
  • SEGUNDO MINUTO
  • HORA, DÍA
  • WEEK
  • MONTH
  • TRIMESTRE o
  • YEAR

El valor unitario se puede especificar usando una de las palabras clave como se muestra o con un prefijo de SQL_TSI_.

Por ejemplo, DAY y SQL_TSI_DAY son legales.

mysql> SELECT TIMESTAMPADD(MINUTE,1,'2003-01-02');
+---------------------------------------------------------+
| TIMESTAMPADD(MINUTE,1,'2003-01-02')                     |
+---------------------------------------------------------+
| 2003-01-02 00:01:00                                     |
+---------------------------------------------------------+
1 row in set (0.00 sec)

TIMESTAMPDIFF (unidad, datetime_expr1, datetime_expr2)

Devuelve la diferencia de números enteros entre las expresiones de fecha o fecha y hora datetime_expr1 y datetime_expr2. La unidad del resultado viene dada por el argumento de la unidad. Los valores legales para la unidad son los mismos que los enumerados en la descripción de la función TIMESTAMPADD ().

mysql> SELECT TIMESTAMPDIFF(MONTH,'2003-02-01','2003-05-01');
+---------------------------------------------------------+
| TIMESTAMPDIFF(MONTH,'2003-02-01','2003-05-01')          |
+---------------------------------------------------------+
| 3                                                       |
+---------------------------------------------------------+
1 row in set (0.00 sec)

TIME_FORMAT (hora, formato)

Esta función se usa como la función DATE_FORMAT (), pero la cadena de formato puede contener especificadores de formato solo para horas, minutos y segundos.

Si el valor de tiempo contiene una parte de la hora mayor que 23, el%H y%k Los especificadores de formato de hora producen un valor mayor que el rango habitual de 0 a 23. Los otros especificadores de formato de hora producen el valor de hora módulo 12.

mysql> SELECT TIME_FORMAT('100:00:00', '%H %k %h %I %l');
+---------------------------------------------------------+
| TIME_FORMAT('100:00:00', '%H %k %h %I %l')              |
+---------------------------------------------------------+
| 100 100 04 04 4                                         |
+---------------------------------------------------------+
1 row in set (0.00 sec)

TIME_TO_SEC (hora)

Devuelve el argumento de tiempo convertido a segundos.

mysql> SELECT TIME_TO_SEC('22:23:00');
+---------------------------------------------------------+
| TIME_TO_SEC('22:23:00')                                 |
+---------------------------------------------------------+
| 80580                                                   |
+---------------------------------------------------------+
1 row in set (0.00 sec)

Fecha)

Dada una fecha, devuelve un número de día (el número de días desde el año 0).

mysql> SELECT TO_DAYS(950501);
+---------------------------------------------------------+
| TO_DAYS(950501)                                         |
+---------------------------------------------------------+
| 728779                                                  |
+---------------------------------------------------------+
1 row in set (0.00 sec)

UNIX_TIMESTAMP (), UNIX_TIMESTAMP (fecha)

Si se llama sin argumento, esta función devuelve una marca de tiempo Unix (segundos desde '1970-01-01 00:00:00' UTC) como un entero sin signo. Si se llama a UNIX_TIMESTAMP () con un argumento de fecha, devuelve el valor del argumento como segundos desde '1970-01-01 00:00:00' UTC. La fecha puede ser una cadena DATE, una cadena DATETIME, un TIMESTAMP o un número en el formato AAMMDD o YYYYMMDD.

mysql> SELECT UNIX_TIMESTAMP();
+---------------------------------------------------------+
| UNIX_TIMESTAMP()                                        |
+---------------------------------------------------------+
| 882226357                                               |
+---------------------------------------------------------+
1 row in set (0.00 sec)

mysql> SELECT UNIX_TIMESTAMP('1997-10-04 22:23:00');
+---------------------------------------------------------+
| UNIX_TIMESTAMP('1997-10-04 22:23:00')                   |
+---------------------------------------------------------+
| 875996580                                               |
+---------------------------------------------------------+
1 row in set (0.00 sec)

UTC_DATE, UTC_DATE ()

Devuelve la fecha UTC actual como un valor en formato 'AAAA-MM-DD' o AAAAMMDD, dependiendo de si la función se usa en una cadena o en un contexto numérico.

mysql> SELECT UTC_DATE(), UTC_DATE() + 0;
+---------------------------------------------------------+
| UTC_DATE(), UTC_DATE() + 0                              |
+---------------------------------------------------------+
| 2003-08-14, 20030814                                    |
+---------------------------------------------------------+
1 row in set (0.00 sec)

UTC_TIME, UTC_TIME ()

Devuelve la hora UTC actual como un valor en formato 'HH: MM: SS' o HHMMSS, dependiendo de si la función se usa en una cadena o en un contexto numérico.

mysql> SELECT UTC_TIME(), UTC_TIME() + 0;
+---------------------------------------------------------+
| UTC_TIME(), UTC_TIME() + 0                              |
+---------------------------------------------------------+
| 18:07:53, 180753                                        |
+---------------------------------------------------------+
1 row in set (0.00 sec)

UTC_TIMESTAMP, UTC_TIMESTAMP ()

Devuelve la fecha y hora UTC actual como un valor en 'AAAA-MM-DD HH: MM: SS' o en un formato AAAAMMDDHHMMSS, dependiendo de si la función se usa en una cadena o en un contexto numérico.

mysql> SELECT UTC_TIMESTAMP(), UTC_TIMESTAMP() + 0;
+---------------------------------------------------------+
| UTC_TIMESTAMP(), UTC_TIMESTAMP() + 0                    |
+---------------------------------------------------------+
| 2003-08-14 18:08:04, 20030814180804                     |
+---------------------------------------------------------+
1 row in set (0.00 sec)

WEEK (fecha [, modo])

Esta función devuelve el número de semana para la fecha. La forma de dos argumentos de WEEK () le permite especificar si la semana comienza un domingo o un lunes y si el valor de retorno debe estar en el rango de 0 a 53 o de 1 a 53. Si se omite el argumento de modo, se utiliza el valor de la variable de sistema default_week_format

Modo Primer dia de la semana Rango La semana 1 es la primera semana.
0 domingo 0-53 con un domingo de este año
1 lunes 0-53 con más de 3 días este año
2 domingo 1-53 con un domingo de este año
3 lunes 1-53 con más de 3 días este año
4 domingo 0-53 con más de 3 días este año
5 lunes 0-53 con un lunes en este año
6 domingo 1-53 con más de 3 días este año
7 lunes 1-53 con un lunes en este año
mysql> SELECT WEEK('1998-02-20');
+---------------------------------------------------------+
| WEEK('1998-02-20')                                      |
+---------------------------------------------------------+
| 7                                                       |
+---------------------------------------------------------+
1 row in set (0.00 sec)

WEEKDAY (fecha)

Devuelve el índice de días de la semana para la fecha (0 = lunes, 1 = martes,. 6 = domingo).

mysql> SELECT WEEKDAY('1998-02-03 22:23:00');
+---------------------------------------------------------+
| WEEKDAY('1998-02-03 22:23:00')                          |
+---------------------------------------------------------+
| 1                                                       |
+---------------------------------------------------------+
1 row in set (0.00 sec)

WEEKOFYEAR (fecha)

Devuelve la semana del calendario de la fecha como un número en el rango de 1 a 53. WEEKOFYEAR () es una función de compatibilidad que es equivalente a WEEK (fecha, 3).

mysql> SELECT WEEKOFYEAR('1998-02-20');
+---------------------------------------------------------+
| WEEKOFYEAR('1998-02-20')                                |
+---------------------------------------------------------+
| 8                                                       |
+---------------------------------------------------------+
1 row in set (0.00 sec)

AÑO (fecha)

Devuelve el año para la fecha, en el rango de 1000 a 9999, o 0 para el .zero. fecha.

mysql> SELECT YEAR('98-02-03');
+---------------------------------------------------------+
| YEAR('98-02-03')                                        |
+---------------------------------------------------------+
| 1998                                                    |
+---------------------------------------------------------+
1 row in set (0.00 sec)

YEARWEEK (fecha), YEARWEEK (fecha, modo)

Devuelve el año y la semana de una fecha. El argumento de modo funciona exactamente como el argumento de modo de la función WEEK (). El año en el resultado puede ser diferente del año en el argumento de fecha para la primera y última semana del año.

mysql> SELECT YEARWEEK('1987-01-01');
+---------------------------------------------------------+
| YEAR('98-02-03')YEARWEEK('1987-01-01')                  |
+---------------------------------------------------------+
| 198653                                                  |
+---------------------------------------------------------+
1 row in set (0.00 sec)

Note - El número de semana es diferente de lo que devolvería la función WEEK () (0) para los argumentos opcionales 0 o 1, ya que WEEK () luego devuelve la semana en el contexto del año dado.