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.