SQL - funções de data

A tabela a seguir contém uma lista de todas as funções importantes relacionadas à data e hora disponíveis por meio do SQL. Existem várias outras funções suportadas por seu RDBMS. A lista fornecida é baseada em MySQL RDBMS.

Sr. Não. Descrição da função
1 ADDDATE ()

Adiciona datas

2 TEMPO EXTRA()

Adiciona tempo

3 CONVERT_TZ ()

Converte de um fuso horário para outro

4 CURDATE ()

Retorna a data atual

5 CURRENT_DATE (), CURRENT_DATE

Sinônimos para CURDATE ()

6 CURRENT_TIME (), CURRENT_TIME

Sinônimos para CURTIME ()

7 CURRENT_TIMESTAMP (), CURRENT_TIMESTAMP

Sinônimos para AGORA ()

8 CURTIME ()

Retorna a hora atual

9 DATE_ADD ()

Adiciona duas datas

10 FORMATO DE DATA()

Formata a data conforme especificado

11 DATE_SUB ()

Subtrai duas datas

12 ENCONTRO()

Extrai a parte da data de uma data ou expressão datetime

13 DATEDIFF ()

Subtrai duas datas

14 DIA()

Sinônimo de DAYOFMONTH ()

15 DAYNAME ()

Retorna o nome do dia da semana

16 DIA DO MÊS()

Retorna o dia do mês (1-31)

17 DIA DA SEMANA()

Retorna o índice do dia da semana do argumento

18 DAYOFYEAR ()

Retorna o dia do ano (1-366)

19 EXTRAIR

Extrai parte de uma data

20 FROM_DAYS ()

Converte um número de dia em uma data

21 FROM_UNIXTIME ()

Formata a data como um carimbo de data / hora UNIX

22 HORA()

Extrai a hora

23 ÚLTIMO DIA

Retorna o último dia do mês para o argumento

24 LOCALTIME (), LOCALTIME

Sinônimo de AGORA ()

25 LOCALTIMESTAMP, LOCALTIMESTAMP ()

Sinônimo de AGORA ()

26 MAKEDATE ()

Cria uma data do ano e dia do ano

27 MAKETIME

MAKETIME ()

28 MICROSEGUNDO ()

Retorna os microssegundos do argumento

29 MINUTO()

Retorna o minuto do argumento

30 MÊS()

Retorna o mês a partir da data passada

31 MONTHNAME ()

Retorna o nome do mês

32 AGORA()

Retorna a data e hora atuais

33 PERIOD_ADD ()

Adiciona um período a um ano-mês

34 PERIOD_DIFF ()

Retorna o número de meses entre os períodos

35 TRIMESTRE()

Retorna o trimestre de um argumento de data

36 SEC_TO_TIME ()

Converte segundos para o formato 'HH: MM: SS'

37 SEGUNDO()

Retorna o segundo (0-59)

38 STR_DA_DATA ()

Converte uma string em uma data

39 SUBDATE ()

Quando chamado com três argumentos, é um sinônimo para DATE_SUB ()

40 SUBTIME ()

Subtrai tempos

41 SYSDATE ()

Retorna a hora em que a função é executada

42 TIME_FORMAT ()

Formatos como tempo

43 TIME_TO_SEC ()

Retorna o argumento convertido em segundos

44 TEMPO()

Extrai a parte do tempo da expressão passada

45 TIMEDIFF ()

Subtrai o tempo

46 TIMESTAMP ()

Com um único argumento, essa função retorna a expressão de data ou data e hora. Com dois argumentos, a soma dos argumentos

47 TIMESTAMPADD ()

Adiciona um intervalo a uma expressão datetime

48 TIMESTAMPDIFF ()

Subtrai um intervalo de uma expressão datetime

49 TO_DAYS ()

Retorna o argumento da data convertido em dias

50 UNIX_TIMESTAMP ()

Retorna um carimbo de data / hora UNIX

51 UTC_DATE ()

Retorna a data UTC atual

52 UTC_TIME ()

Retorna a hora UTC atual

53 UTC_TIMESTAMP ()

Retorna a data e hora UTC atual

54 SEMANA()

Retorna o número da semana

55 WEEKDAY ()

Retorna o índice do dia da semana

56 WEEKOFYEAR ()

Retorna a semana do calendário da data (1-53)

57 ANO()

Retorna o ano

58 SEMANA ANO ()

Retorna o ano e a semana

ADDDATE (data, unidade expr INTERVAL), ADDDATE (expr, dias)

Quando chamado com a forma INTERVAL do segundo argumento, ADDDATE () é um sinônimo para DATE_ADD (). A função relacionada SUBDATE () é um sinônimo para DATE_SUB (). Para obter informações sobre o argumento da unidade INTERVAL, consulte a discussão para 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)

Quando chamado com a forma de dias do segundo argumento, o MySQL o trata como um número inteiro de dias a ser adicionado 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 () adiciona expr2 a expr1 e retorna o resultado. O expr1 é uma expressão de tempo ou data e hora, enquanto o expr2 é uma expressão de tempo.

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)

Isso converte um valor datetime dt do fuso horário fornecido por from_tz para o fuso horário fornecido por to_tz e retorna o valor resultante. Esta função retorna NULL se os argumentos forem invá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 ()

Retorna a data atual como um valor no formato 'AAAA-MM-DD' ou AAAAMMDD, dependendo se a função é usada em uma string ou em um 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 e CURRENT_DATE ()

CURRENT_DATE e CURRENT_DATE () são sinônimos para CURDATE ()

CURTIME ()

Retorna a hora atual como um valor no formato 'HH: MM: SS' ou HHMMSS, dependendo se a função é usada em uma string ou em um contexto numérico. O valor é expresso no fuso horário atual.

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 e CURRENT_TIME ()

CURRENT_TIME e CURRENT_TIME () são sinônimos para CURTIME ().

CURRENT_TIMESTAMP e CURRENT_TIMESTAMP ()

CURRENT_TIMESTAMP e CURRENT_TIMESTAMP () são sinônimos para NOW ().

DATA (expr)

Extrai a parte da data da expressão data ou data e 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 () retorna expr1. expr2 expresso como um valor em dias de uma data a outra. Expr1 e expr2 são expressões de data ou data e hora. Apenas as partes da data dos valores são usadas no cálculo.

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 (data, unidade expr INTERVAL), DATE_SUB (data, unidade expr INTERVAL)

Essas funções realizam aritmética de data. odateé um valor DATETIME ou DATE especificando a data de início. oexpré uma expressão que especifica o valor do intervalo a ser adicionado ou subtraído da data de início. O expr é uma string; pode começar com '-' para intervalos negativos.

UMA unit é uma palavra-chave que indica as unidades em que a expressão deve ser interpretada.

o INTERVAL a palavra-chave e o especificador de unidade não diferenciam maiúsculas de minúsculas.

A tabela a seguir mostra a forma esperada do argumento expr para cada valor de unidade.

valor unitário ExprFormat esperado
MICROSEGUNDO MICROSEGUNDOS
SEGUNDO SEGUNDOS
MINUTO MINUTOS
HORA HORAS
DIA DIAS
SEMANA SEMANAS
MÊS MESES
TRIMESTRE QUARTERS
ANO ANOS
SECOND_MICROSECOND 'SECONDS.MICROSECONDS'
MINUTE_MICROSECOND 'MINUTES.MICROSECONDS'
MINUTE_SECOND 'MINUTES: SECONDS'
HOUR_MICROSECOND 'HOURS.MICROSECONDS'
HOUR_SECOND 'HOURS: MINUTES: SECONDS'
HOUR_MINUTE 'HOURS: MINUTES'
DAY_MICROSECOND 'DIAS.MICROSECONDS'
DAY_SECOND 'DAYS HOURS: MINUTES: SECONDS'
DAY_MINUTE 'DAYS HOURS: MINUTES'
DAY_HOUR 'DAYS HOURS'
ANO MÊS 'ANOS-MESES'

Os valores QUARTER e WEEKestão disponíveis no MySQL 5.0.0. versão.

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 (data, formato)

Este comando formata o valor da data de acordo com a string de formato.

Os seguintes especificadores podem ser usados ​​na string de formato. O caractere '%' é necessário antes dos caracteres do especificador de formato.

Sr. Não. Especificador e descrição
1

%a

Nome abreviado do dia da semana (dom .. sáb)

2

%b

Nome abreviado do mês (Jan..Dez)

3

%c

Mês, numérico (0..12)

4

%D

Dia do mês com sufixo inglês (0th, 1st, 2nd, 3rd,.)

5

%d

Dia do mês, numérico (00..31)

6

%e

Dia do mês, numérico (0..31)

7

%f

Microssegundos (000000..999999)

8

%H

Hora (00..23)

9

%h

Hora (01..12)

10

%I

Hora (01..12)

11

%i

Minutos, numérico (00..59)

12

%j

Dia do ano (001..366)

13

%k

Hora (0..23)

14

%l

Hora (1..12)

15

%M

Nome do mês (janeiro .. dezembro)

16

%m

Mês, numérico (00..12)

17

%p

AM ou PM

18

%r

Tempo, 12 horas (hh: mm: ss seguido por AM ou PM)

19

%S

Segundos (00..59)

20

%s

Segundos (00..59)

21

%T

Tempo, 24 horas (hh: mm: ss)

22

%U

Semana (00..53), onde domingo é o primeiro dia da semana

23

%u

Semana (00..53), onde segunda-feira é o primeiro dia da semana

24

%V

Semana (01..53), onde domingo é o primeiro dia da semana; usado com% X

25

%v

Semana (01..53), onde segunda-feira é o primeiro dia da semana; usado com% x

26

%W

Nome do dia da semana (domingo .. sábado)

27

%w

Dia da semana (0 = domingo..6 = sábado)

28

%X

Ano para a semana em que domingo é o primeiro dia da semana, numérico, quatro dígitos; usado com% V

29

%x

Ano para a semana, onde segunda-feira é o primeiro dia da semana, numérico, quatro dígitos; usado com% v

30

%Y

Ano, numérico, quatro dígitos

31

%y

Ano, numérico (dois dígitos)

32

%%

Um literal.%. personagem

33

%x

x, para any.x. não listado acima

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 (data, unidade expr INTERVAL)

Isso é semelhante à função DATE_ADD ().

DAY (data)

O DAY () é um sinônimo para a função DAYOFMONTH ().

DAYNAME (data)

Retorna o nome do dia da semana para a data.

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

DAYOFMONTH (data)

Retorna o dia do mês para a data, no intervalo de 0 a 31.

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

DAYOFWEEK (data)

Retorna o índice do dia da semana para a data (1 = domingo, 2 = segunda-feira,., 7 = sábado). Esses valores de índice correspondem ao padrão ODBC.

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

DAYOFYEAR (data)

Retorna o dia do ano para a data, no intervalo de 1 a 366.

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

EXTRACT (unidade DE data)

A função EXTRACT () usa os mesmos tipos de especificadores de unidade que DATE_ADD () ou DATE_SUB (), mas extrai partes da data em vez de realizar aritmética de data.

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 um número de dia N, retorna um valor DATE.

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

Note- Use FROM_DAYS () com cuidado em datas antigas. Não se destina a ser usado com valores anteriores ao advento do calendário gregoriano (1582).

FROM_UNIXTIME (unix_timestamp)

FROM_UNIXTIME (unix_timestamp, formato)

Retorna uma representação do unix_timestampargumento como um valor no formato 'AAAA-MM-DD HH: MM: SS ou AAAAMMDDHHMMSS, dependendo se a função é usada em uma string ou em um contexto numérico. O valor é expresso no fuso horário atual. O argumento unix_timestamp é um valor de carimbo de data / hora interno, que é produzido peloUNIX_TIMESTAMP() função.

Se o formato for fornecido, o resultado é formatado de acordo com a string de formato, que é usada da mesma forma que está listada na entrada para o DATE_FORMAT() função.

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

HORA (hora)

Retorna a hora para o tempo. O intervalo do valor de retorno é de 0 a 23 para valores de hora do dia. No entanto, o intervalo de valores TIME é, na verdade, muito maior, então HOUR pode retornar valores maiores que 23.

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

LAST_DAY (data)

Obtém um valor de data ou data e hora e retorna o valor correspondente para o último dia do mês. Retorna NULL se o argumento for inválido.

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

LOCALTIME e LOCALTIME ()

LOCALTIME e LOCALTIME () são sinônimos para NOW ().

LOCALTIMESTAMP e LOCALTIMESTAMP ()

LOCALTIMESTAMP e LOCALTIMESTAMP () são sinônimos para NOW ().

MAKEDATE (ano, dia do ano)

Retorna uma data, dados os valores de ano e dia do ano. O valor dayofyear deve ser maior que 0 ou o resultado será NULL.

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)

Retorna um valor de tempo calculado a partir dos argumentos de hora, minuto e segundo.

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

MICROSEGUNDO (expr)

Retorna os microssegundos da expressão de hora ou data e hora (expr) como um número no intervalo 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)

Retorna o minuto para hora, no intervalo 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)

Data do mês)

Retorna o mês da data, no intervalo de 0 a 12.

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

MONTHNAME (data)

Retorna o nome completo do mês para uma data.

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

AGORA()

Retorna a data e a hora atuais como um valor no formato 'AAAA-MM-DD HH: MM: SS' ou AAAAMMDDHHMMSS, dependendo se a função é usada em uma string ou contexto numérico. Este valor é expresso no fuso horário atual.

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

PERIOD_ADD (P, N)

Adiciona N meses a um período P (no formato YYMM ou YYYYMM). Retorna um valor no formato AAAAMM. Observe que o argumento de período P não é um valor de data.

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

PERIOD_DIFF (P1, P2)

Retorna o número de meses entre os períodos P1 e P2. Esses períodos P1 e P2 devem estar no formato YYMM ou YYYYMM. Observe que os argumentos de período P1 e P2 não são valores de data.

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

QUARTER (data)

Retorna o trimestre do ano para a data, no intervalo de 1 a 4.

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

Segundo tempo)

Retorna o segundo para o tempo, no intervalo 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)

Retorna o argumento de segundos, convertido em horas, minutos e segundos, como um valor no formato 'HH: MM: SS' ou HHMMSS, dependendo se a função é usada em uma string ou 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)

Este é o inverso da função DATE_FORMAT (). Leva uma string str e um formato de string de formato. A função STR_TO_DATE () retorna um valor DATETIME se a string de formato contiver partes de data e hora. Caso contrário, ele retorna um valor DATE ou TIME se a string contiver apenas partes de data ou 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 (data, unidade expr INTERVAL) e SUBDATE (expr, dias)

Quando invocado com a forma INTERVAL do segundo argumento, SUBDATE () é um sinônimo para DATE_SUB (). Para obter informações sobre o argumento da unidade INTERVAL, consulte a discussão para 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)

A função SUBTIME () retorna expr1. expr2 expresso como um valor no mesmo formato que expr1. O valor expr1 é uma expressão de hora ou data e hora, enquanto o valor expr2 é uma expressão 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 ()

Retorna a data e a hora atuais como um valor no formato 'AAAA-MM-DD HH: MM: SS' ou AAAAMMDDHHMMSS, dependendo se a função é usada em uma string ou em um contexto numérico.

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

TIME (expr)

Extrai a parte da hora da expressão de hora ou data e hora expr e o retorna como uma string.

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)

A função TIMEDIFF () retorna expr1. expr2 expresso como um valor de tempo. Esses valores expr1 e expr2 são expressões de hora ou data e hora, mas ambas devem ser do mesmo 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)

Com um único argumento, esta função retorna a data ou expressão datetime expr como um valor datetime. Com dois argumentos, ele adiciona a expressão de tempo expr2 à expressão de data ou data e horaexpr1 e retorna o resultado como um valor de data e 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 (unidade, intervalo, datetime_expr)

Esta função adiciona o intervalo da expressão de número inteiro à expressão de data ou data e hora datetime_expr. A unidade para o intervalo é dada pelo argumento da unidade, que deve ser um dos seguintes valores -

  • FRAC_SECOND
  • SEGUNDO, MINUTO
  • HORA, DIA
  • WEEK
  • MONTH
  • QUARTER ou
  • YEAR

O valor da unidade pode ser especificado usando uma das palavras-chave conforme mostrado ou com um prefixo de SQL_TSI_.

Por exemplo, DAY e SQL_TSI_DAY são legais.

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 (unidade, datetime_expr1, datetime_expr2)

Retorna a diferença inteira entre as expressões de data ou data e hora datetime_expr1 e datetime_expr2. A unidade do resultado é fornecida pelo argumento da unidade. Os valores legais para a unidade são iguais aos listados na descrição da função 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 função é usada como a função DATE_FORMAT (), mas a string de formato pode conter especificadores de formato apenas para horas, minutos e segundos.

Se o valor da hora contiver uma parte da hora maior que 23, a%H e%k Os especificadores de formato de hora produzem um valor maior do que o intervalo normal de 0 a 23. Os outros especificadores de formato de hora produzem o módulo de valor de hora 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)

Retorna o argumento de tempo convertido em segundos.

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

Data de hoje)

Dada uma data, retorna um número de dia (o número de dias desde o ano 0).

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

UNIX_TIMESTAMP (), UNIX_TIMESTAMP (data)

Se chamada sem nenhum argumento, esta função retorna um timestamp Unix (segundos desde '1970-01-01 00:00:00' UTC) como um inteiro sem sinal. Se UNIX_TIMESTAMP () for chamado com um argumento de data, ele retornará o valor do argumento como segundos desde '1970-01-01 00:00:00' UTC. data pode ser uma string DATE, uma string DATETIME, um TIMESTAMP ou um número no formato YYMMDD ou 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 ()

Retorna a data UTC atual como um valor no formato 'AAAA-MM-DD' ou AAAAMMDD, dependendo se a função é usada em uma string ou 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 ()

Retorna a hora UTC atual como um valor no formato 'HH: MM: SS' ou HHMMSS, dependendo se a função é usada em uma string ou 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 ()

Retorna a data e hora UTC atuais como um valor em 'AAAA-MM-DD HH: MM: SS' ou em um formato AAAAMMDDHHMMSS, dependendo se a função é usada em uma string ou em um 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)

SEMANA (data [, modo])

Esta função retorna o número da semana para a data. A forma de dois argumentos de WEEK () permite que você especifique se a semana começa em um domingo ou segunda-feira e se o valor de retorno deve estar no intervalo de 0 a 53 ou de 1 a 53. Se o argumento de modo for omitido, o valor da variável de sistema default_week_format é usado

Modo Primeiro dia da semana Alcance A semana 1 é a primeira semana.
0 Domigo 0-53 com um domingo neste ano
1 Segunda-feira 0-53 com mais de 3 dias este ano
2 Domigo 1-53 com um domingo neste ano
3 Segunda-feira 1-53 com mais de 3 dias este ano
4 Domigo 0-53 com mais de 3 dias este ano
5 Segunda-feira 0-53 com uma segunda-feira neste ano
6 Domigo 1-53 com mais de 3 dias este ano
7 Segunda-feira 1-53 com uma segunda-feira neste ano
mysql> SELECT WEEK('1998-02-20');
+---------------------------------------------------------+
| WEEK('1998-02-20')                                      |
+---------------------------------------------------------+
| 7                                                       |
+---------------------------------------------------------+
1 row in set (0.00 sec)

WEEKDAY (data)

Retorna o índice do dia da semana para a data (0 = segunda-feira, 1 = terça-feira,. 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 (data)

Retorna a semana do calendário da data como um número no intervalo de 1 a 53. WEEKOFYEAR () é uma função de compatibilidade equivalente a WEEK (data, 3).

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

ANO (data)

Retorna o ano para a data, no intervalo de 1000 a 9999, ou 0 para o .zero. encontro.

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

YEARWEEK (data), YEARWEEK (data, modo)

Retorna o ano e a semana para uma data. O argumento de modo funciona exatamente como o argumento de modo para a função WEEK (). O ano no resultado pode ser diferente do ano no argumento de data para a primeira e a última semana do ano.

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

Note - O número da semana é diferente do que a função WEEK () retornaria (0) para os argumentos opcionais 0 ou 1, pois WEEK () retorna a semana no contexto do ano fornecido.