Funções de manipulação de hora no MySQL
Veja neste artigo algumas das principais funções de manipulação de horas no MySQL 5.5. Serão apresentados métodos de obtenção de data e hora do servidor, formatação e extração de partes de horas.
Olá pessoal, neste artigo vou demostrar algumas funções que o SGBD MySQL nos fornece para manipularmos horas internamente no banco usando SQL. Geralmente efetuamos esse tipo de tratamento internamente na aplicação, independente da linguagem em que esteja sendo desenvolvida a aplicação.
Nesse artigo vou usar o MySQL 5.5.13, sem nenhum tipo de interface gráfica para gerenciamento, vamos acessar o MySQL através do prompt de comando do próprio Windows 7.
Para iniciar o prompt basta clicar em INICAR>EXECUTAR e digitar “cmd” ou vá até acessórios e selecione a opção correspondente.
Iniciando MySQL no prompt basta digitar: “mysql –u <seu_usuário> -p <sua_senha>”
Função CURTIME() ou CURRENT_TIME()
Vamos começar demonstrando como retornar a data atual do servidor. Podemos usar a função “CURTIME()” ou “CURRENT_TIME()”. Digite no prompt a seguinte instrução:
SELECT CURTIME();
ou
SELECT CURRENT_TIME();
Função TIME_FORMAT()
Essa função tem a finalidade de formatar horas, ela é muito semelhante à função “DATE_FORMAT()” para formatar datas. Podemos usar especificadores de formato tais como: hora, minuto, segundo e microsegundos. Para usá-la temos que passar 2 parâmetros, o primeiro tem que ser o valor da hora que será formatada e o segundo uma string especificando o tipo de formato.
SELECT CURTIME() AS HORA, TIME_FORMAT(CURTIME(), '%h - %i - %s') AS HORA_FORMATADA;
Notem que nesse exemplo a instrução retornou 2 valores, o primeiro exibe a hora no formato normal e o segundo exibe de acordo com o formato que foi passado como parâmetro.
Observações:o parâmetro “%” é obrigatório antes de informar os caracteres de formato. Abaixo seguem alguns formatos aceitos:
Especificação | Descrição |
---|---|
%h | Hora (01..12) |
%H | Hora (00..23) |
$i | Minutos, numérico (00..59) |
%s | Segundos (00..59) |
%r | Tempo, 12 horas (hh:mm:ss seguido por AM ou Pm) |
%T | Horário, 24 horas (hh:mm:ss) |
Função CURRENT_TIMESTAMP()
Essa função retorna a data e hora atual do servidor, geralmente é usada para gravar data e hora de ações (INSERTS, UPDATES E DELETES) em determinada tabela, uma espécie de log.
SELECT CURRENT_TIMESTAMP();
Função TIME()
Podemos usar essa função para extrair somente a hora de um campo do tipo timestamp (‘2012-08-23 20:53:32’). Para esse exemplo vou usar a função CURRENT_TIMESTAMP() para retornar data e hora atual do servidor.
Função SEC_TO_TIME()
Essa função recebe um parâmetro do tipo inteiro que teoricamente representaria os segundos e retorna um valor convertido em horas, minutos e segundos como um valor do tipo “Time”. Nesse exemplo vou passar o valor 1000 como parâmetro.
SELECT SEC_TO_TIME(1000);
Função TIME_TO_SEC()
Agora vamos fazer o caminho inverso ao demonstrado na função anterior. Vamos converter um valor do tipo time que será passado com parâmetro para segundos, usando a função “TIME_TO_SEC()”. Para melhor entender essa conversão vou usar o mesmo valor de retorno da função “SEC_TO_TIME()”, “00:16:40”.
SELECT TIME_TO_SEC('00:16:40');
Função HOUR(), MINUTE() E SECOND()
Usando essas 3 funções podemos fragmentar um valor do tipo time sendo que: HOUR() retorna hora, MINUTE() retorna minuto e SECOND() retorna segundo. Nesse exemplo vou fragmentar em 3 valores (Hora, Minuto e Segundo) um valor do tipo time('12:30:34').
SELECT HOUR('12:30:34') AS HORA, MINUTE('12:30:34') AS MINUTOS, SECOND('12:30:34') AS SEGUNDOS;
Função TIMEDIFF()
Com a função “TIMEDIFF()” podemos encontrar a diferença entre os 2 valores do tipo time que são passados como parâmetro, ou seja, essa função retorna o resultado da subtração entre os parâmetros. Muito semelhante à função “DATEDIFF()” que retorna a diferença entre 2 datas.
SELECT TIMEDIFF('12:35:34', '12:30:46');
Bom pessoal, demonstrei nesse artigo algumas das funções para manipular valores do tipo time que o MySQL oferece. Para o leitor que tiver a curiosidade de conhecer todas ou a maioria, visite o site. Lembrado que esse artigo foi baseado no manual da versão 5.5 do MySQL, em versões anteriores existe a possibilidade de algumas dessas funções não funcionarem.
Sugiro ainda, a quem possa interessar, a leitura deste outro artigo no qual abordei as funções de manipulação de datas no MySQL.
Espero que tenham apreciado e até a próxima.
Caso suja alguma dúvida fiquem à vontade também para usar a seção de comentários.
Abraços a todos!
" target="_blank" title="Curso de MySQL Completo">MySQL oferece. Para o leitor que tiver a curiosidade de conhecer todas ou a maioria, visite o site. Lembrado que esse artigo foi baseado no manual da versão 5.5 do MySQL, em versões anteriores existe a possibilidade de algumas dessas funções não funcionarem.Sugiro ainda, a quem possa interessar, a leitura deste outro artigo no qual abordei as funções de manipulação de datas no MySQL.
Espero que tenham apreciado e até a próxima.
Caso suja alguma dúvida fiquem à vontade também para usar a seção de comentários.
Abraços a todos!
Artigos relacionados
-
Artigo
-
Artigo
-
Artigo
-
Artigo
-
Artigo