UpInside Treinamentos

Trabalhando com Data e Hora no MariaDB: Parte 2

Vamos ver agora como efetuar operações com data e hora, calcular intervalos e ainda reescrever a data utilizando o formato que você desejar.

  • Compartilhe esse post
  • Compartilhar no Facebook00
  • Compartilhar no Google Plus00
  • Compartilhar no Twitter

Salve salveeeee WebMaster! Gustavo Web aqui novamente para darmos continuidade naquele artigo que iniciamos sobre Data e Hora no MariaDB!

Conforme prometido, vamos falar agora sobre a segunda parte das funções relacionadas a data e hora no MariaDB. Se você ainda não viu a primeira parte desse artigo...

... sugiro que você corra para ler a primeira parte AGORA!

Só clicar aqui e eu te mando para o primeiro artigo!

Bom, nessa aula, assim como na anterior eu organizei as funções que vamos trabalhar num mapa mental! Assim fica mais organizado e auxilia na organização dos seus estudos. Não deixe de me contar como está sendo a sua experiência com esses artigos moquerido.

Assim que você assistir o vídeo vai ver que eu me refiro a duas tabelas que devem ser consultadas para utilizar algumas funções, eu vou deixar a cola dela aqui abaixo e sugiro que você deixe esse link nos seus favoritos para que possa consultar mais tarde quando precisar desses recursos. Certo?

Sugiro que: Leia com muita atenção a definição de cada descrição! Já resolvi muita coisa simplesmente me recordando de uma função que já tinha lido a respeito... Quando surgir a necessidade, tenho certeza que você vai lembrar do post da UP onde tem tudo isso beeeem resumido para você!

A primeira tabela que me refiro é a Date and Time Units, ou seja, são todas as unidades de medida de data e hora... Esses parâmetros servem para você utilizar no ADDDATE() e no SUBDATE() por exemplo...

SELECT ADDDATE(CURRENT_DATE(), INTERVAL 1 MONTH);

Nesse código está sendo adicionado um mês... Confira na tabela abaixo os valores aceitos:

  • MICROSECOND (Referente a microsegundos)
  • SECOND (Referente a segundos)
  • MINUTE (Referente a minutos)
  • HOUR (Referente a horas)
  • DAY (Referente a dias)
  • WEEK (Referente a semanas)
  • MONTH (Referente a meses)
  • QUARTER (Referente a quartis)
  • YEAR (Referente a anos)
  • SECOND_MICROSECOND (Referente a segundos e microsegundos)
  • MINUTE_MICROSECOND (Referente a minutos, segundos e microsegundos)
  • MINUTE_SECOND (Referente a minutos e segundos)
  • HOUR_MICROSECOND (Referente a horas até microsegundos)
  • HOUR_SECOND (Referente a horas até segundos)
  • HOUR_MINUTE (Referente a horas e minutos)
  • DAY_MICROSECOND (Referente a dias até microsegundos)
  • DAY_SECOND (Referente a dias até segundos)
  • DAY_MINUTE (Referente a dias até minutos)
  • DAY_HOUR (Referente a dias até horas)
  • YEAR_MONTH (Referente a anos e meses)

A segunda tabela que me refiro, é para usar na função DATE_FORMAT()! Dá uma olhada na variedade de parâmetros que você pode usar para imprimir sua data.

  • %D Sulfixo do dia. st referente a first, nd referente a second. ['th', 'nd', 'st' ou 'rd'].
  • %H Horas com 2 dígitos entre 00-23.
  • %I Horas com 2 dígitos entre 01-12.
  • %M Nome completo do mês da localização.
  • %S Segundos com 2 dígitos.
  • %T Horário no formato de 24 horas. Abreviação de '%H:%i:%S' (o mesmo usado no exemplo :)).
  • %U Número da semana (00-53).
  • %V Número da semana (01-53), quando primeiro dia da semana é domingo. Usado com %X.
  • %W Nome completo do dia da semana.
  • %X Ano com 4 dígitos quando o primeiro dia da semana é domingo. Usado com %V.
  • %Y Ano com 4 dígitos.
  • %a Abreviação para o dia da semana.
  • %b Nome abreviado do mês da localização. [Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov or Dec]
  • %c Mês com 1 ou dois dígitos.
  • %d Dia com 2 dígitos.
  • %e Dia com 1 ou 2 dígitos.
  • %f Sub segundos com 6 dígitos.
  • %h Hora com 2 dígitos entre 01-12.
  • %i Minutos com 2 dígitos.
  • %j Dia do ano (001-366).
  • %k Hora com 1 dígito entre 0-23.
  • %l Hora com 1 dígito entre 1-12.
  • %m Mês com 2 dígitos.
  • %p AM/PM.
  • %r Tempo na forma 1 horas, seguido de AM/PM. Abreviação de '%I:%i:%S %p'.
  • %s Segundos com 2 dígitos.
  • %u Número da semana (00-53), quando primeiro dia da semana é segunda-feira.
  • %v Número da semana (01-53), quando primeiro dia da semana é segunda-feira. Usado com %x.
  • %w Dia da semana. 0 = Domingo, 1 = Segunda-feira...
  • %x Ano com 4 dígitos quando o primeiro dia da semana é domingo. Usado com %v.
  • %y Ano com 2 dígitos.
  • %% Para imprimir o caracter literal %.

Então confere o vídeo aí e qualquer coisa pode deixar aqui nos comentários a sua consideração! Vamos conversar sobre o que você achou desses dois artigos sobre trabalhar com data e hora no MariaDB e ainda me conta se ficou alguma dúvida para que se preciso eu possa gravar mais uma aula... 

...ahhh, não deixa de pedir sua sugestão para o próximo artigo, quem sabe eu tiro sua dúvida em vídeo aula! Fechado?

Aqueeele abraço, e a gente se fala em breve!

  • Compartilhe esse post
  • Compartilhar no Facebook00
  • Compartilhar no Google Plus00
  • Compartilhar no Twitter

Olá, deixe seu comentário para Trabalhando com Data e Hora no MariaDB: Parte 2

Já temos 36 comentário(s). DEIXE O SEU :)
Thiago F. martins

Thiago F. martins

Bom dia, ja enviei 2 comentarios e os mesmos não apacerem, são exluidos ou passam por analise para saber se devem aparecer ou não?
★★★★☆DIA 17.04.17 11h55RESPONDER
Gustavo Web, Thiago F. martins
Enviando Comentário Fechar :/
Gustavo Web

Gustavo Web

Sim, os comentários na UP são moderados e só aparece depois que a gente aprova :)

★★★★★DIA 17.04.17 16h33RESPONDER
N/A
Enviando Comentário Fechar :/
Thiago Martins

Thiago Martins

O Boa Tarde, Gustavo, então me veio uma duvida caso eu queira buscar uma data que ja esta cadastrada no No banco como tratar ela com PHP, pq eu tentei buscar a data ja cadastrada na db mais me volta a data atual:

$datetratada = "SELECT DATE_FORMAT(CURRENT_TIMESTAMP(), '%d/%m/%Y ás %H:%i') as data";
$montformdate = mysqli_query($Conectado, $datetratada);
foreach ($montformdate as $fordate):
extract($fordate);
echo 'Data Tradata com DATE_FORMAT ' . $data .'';
endforeach;
★★★★★DIA 15.04.17 15h34RESPONDER
Gustavo Web
Enviando Comentário Fechar :/
Gustavo Web

Gustavo Web

Isso está acontecendo porque você está passando o CURRENT_TIMESTAMP, certo? Você precisa fazer uma pesquisa numa tabela do seu banco de dados, e no campo timestmap dessa coluna, você aplica essa função... Por exemplo:


SELECT 
p.post_title,
p.post_subtitle,

DATE_FORMAT(p.post_timestamp, '%d/%m/%Y às %H:%i')

FROM ws_posts p

Com isso você terá a data dinâmica de cada um deles.

★★★★★DIA 17.04.17 16h29RESPONDER
N/A
Enviando Comentário Fechar :/
Thiago F. martins

Thiago F. martins

Opa, amigo obrigado por responder, fiz como citou acima para teste, me retornou a data que esta cadastrada no banco, porem sem ser tradada. Y/m/d
montei a query: $datetratada = "SELECT data, DATE_FORMAT(data, '%d/%m/%Y') FROM {$tabela}";

Desculpa incomodar, mais é que ter conhecimento em tratar as datas é muito util.
★★★★★DIA 17.04.17 17h21RESPONDER
N/A
Enviando Comentário Fechar :/
Gustavo Web

Gustavo Web

Teoricamente nesse seu select ele deve ter retornado duas colunas... Uma com a data cadastrada no banco de dados no formato americano e outra coluna no formato correto, confere? Basta usar a segunda coluna :)

★★★★★DIA 17.04.17 17h33RESPONDER
N/A
Enviando Comentário Fechar :/
Thiago F. martins

Thiago F. martins

Não, retornou (Data Tradata com DATE_FORMAT 2017-04-01 17:16:22), sendo que o cod esta assim:
$datetratada = "SELECT data, DATE_FORMAT(data, '%d/%m/%Y ás %H:%i') FROM {$tabela}";
$montformdate = mysqli_query($Conectado, $datetratada);
foreach ($montformdate as $fordate):
extract($fordate);
echo 'Data Tradata com DATE_FORMAT ' . $data . '';
endforeach;
★★★★★DIA 17.04.17 17h47RESPONDER
N/A
Enviando Comentário Fechar :/
Gustavo Web

Gustavo Web

Isso está acontenceod porque o parâmetro $data (depois do extract) é a sua primeira coluna e o que você precisa é da segunda...


Execute:


$datetratada = "SELECT data, DATE_FORMAT(data, '%d/%m/%Y ás %H:%i') as data_formatada FROM {$tabela}";

E depois disso, quando rodar o extract executa o $data_formatada e não mais o $data.

★★★★★DIA 17.04.17 18h12RESPONDER
Thiago F. martins
Enviando Comentário Fechar :/
Thiago F. martins

Thiago F. martins

Agora deu, certo, muito obrigado.
★★★★★DIA 17.04.17 19h27RESPONDER
N/A
Enviando Comentário Fechar :/
Gustavo Web

Gustavo Web

Então está beleza :) #BoraaaaaProgramar

★★★★★DIA 17.04.17 19h38RESPONDER
Thiago F. martins
Enviando Comentário Fechar :/
Richard Monesiglio

Richard Monesiglio

Excelente.
Não sei se este é o canal certo, mas gostaria de solicitar uma, ou várias se possível, aula sobre funções no MySQL. Como cria-las, como acessá-las e como receber o resultado.
Muito Obrigado
★★★★★DIA 04.04.17 08h05RESPONDER
N/A
Enviando Comentário Fechar :/
Gustavo Web

Gustavo Web

Fala Richard, esse assunto ja é um pouco mais avançado! Mas vamos ver sim como funciona as funções diretamente do banco de dados.

★★★★★DIA 04.04.17 10h46RESPONDER
N/A
Enviando Comentário Fechar :/
Arlei Ribeiro dos santos

Arlei Ribeiro dos santos

Muito bom artigo e vídeo aula Gustavo. Está conseguindo deixar bem didática suas explicações e práticas conforme manda o protocolo rsrsrs

Um abraço e obrigado pelas Aulas!
★★★★★DIA 02.04.17 10h11RESPONDER
Gustavo Web
Enviando Comentário Fechar :/
Gustavo Web

Gustavo Web

Tmj \o/

★★★★★DIA 03.04.17 17h47RESPONDER
Arlei Ribeiro dos santos
Enviando Comentário Fechar :/
Ruthnaldo Garrido

Ruthnaldo Garrido

Já apanhei muito,
Ganhei muito tempo.

Valeu !!!!
★★★★★DIA 29.03.17 21h16RESPONDER
Gustavo Web, Arlei Ribeiro dos santos
Enviando Comentário Fechar :/
Gustavo Web

Gustavo Web

Hahahha eu sei bem como é isso ai! Fica sempre de olho aqui que eu vou estar postando coisas novas sobre banco de dados.

★★★★★DIA 30.03.17 11h02RESPONDER
Arlei Ribeiro dos santos
Enviando Comentário Fechar :/
Guilherme augusto Teixeira de matos

Guilherme augusto Teixeira de matos

Shooow! Muito interessante essas funções.
Só achei falta da apresentação deste uso na prática, por exemplo, dentro de uma aplicação PHP como vamos usar essas funções dentro de um arquivo PHP. Quem sabe numa próxima aula! Abraço!
★★★★★DIA 28.03.17 16h40RESPONDER
Gustavo Web, Arlei Ribeiro dos santos
Enviando Comentário Fechar :/
Gustavo Web

Gustavo Web

Assim como foi feito no SQL, usando o framework que desenvolvemos aqui no curso de PHP ou no WC você pode fazer da seguinte forma:


$Read->FullRead("SELECT ADDDATE(CURRENT_DATE(), INTERVAL 1 MONTH) as mes_seguinte");
$VencimentoProximoMes = $Read->getResult()[0]['mes_seguinte'];

Note que eu adicionei um alias ao campo, só para ficar mais fácil de escrever o nome :)

★★★★★DIA 29.03.17 09h17RESPONDER
Guilherme augusto Teixeira de matos, Arlei Ribeiro dos santos
Enviando Comentário Fechar :/
Guilherme augusto Teixeira de matos

Guilherme augusto Teixeira de matos

Shoow! Então podemos usar diretamente com o FullRead! Valeu!
★★★★★DIA 29.03.17 12h17RESPONDER
Arlei Ribeiro dos santos
Enviando Comentário Fechar :/
Gustavo Web

Gustavo Web

Pode sim! Com o FullRead você passa todo o código que deseja executar no seu banco de dados e fica mais tranquilo de escrever uma query mais extensa.

★★★★★DIA 29.03.17 13h38RESPONDER
Arlei Ribeiro dos santos
Enviando Comentário Fechar :/
Luiz Servelo

Luiz Servelo

Tive 1 ano de Banco de Dados na facul de Ciência da Computação e nem aprendi direito esses corres que você mostrou, foi mais arquitetura e modelagem... Artigo Excelente!
★★★★★DIA 28.03.17 14h17RESPONDER
Gustavo Web, Adans Silverio Dos Santos, Arlei Ribeiro dos santos
Enviando Comentário Fechar :/
Gustavo Web

Gustavo Web

Relaxa, sofremos do mesmo problema! Na faculdade eu também tive banco de dados com assunto bem superficial... E fica tranquilo, essa é só a pontinha do iceberg, tem muitas funções ainda por vir. Tomara que essas e outras sejam úteis para você nas suas aplicações! :)

★★★★★DIA 28.03.17 16h40RESPONDER
Arlei Ribeiro dos santos
Enviando Comentário Fechar :/
Cesar Moreira Borges

Cesar Moreira Borges

Show de bola! parabéns Gustavo ta ficando fera eim nos vídeos.
★★★★★DIA 28.03.17 14h11RESPONDER
Gustavo Web, Adans Silverio Dos Santos, Arlei Ribeiro dos santos
Enviando Comentário Fechar :/
Gustavo Web

Gustavo Web

Hahaha quem dera! Um dia eu chego lá... Conseguiu dominar então data e hora no banco de dados?

★★★★★DIA 28.03.17 16h37RESPONDER
Adans Silverio Dos Santos, Arlei Ribeiro dos santos
Enviando Comentário Fechar :/
Jorge Shimada

Jorge Shimada

Muito boa explicação e está bem didático. Concluiu o par de aulas com chave de ouro! Parabéns e continue firme com essa categoria. Valeu!!
★★★★★DIA 28.03.17 11h58RESPONDER
Gustavo Web, Arlei Ribeiro dos santos
Enviando Comentário Fechar :/
Gustavo Web

Gustavo Web

Aewww que bom que tenha gostado :) Bora continuar nessa pegada então! #BoraProgramar

★★★★★DIA 28.03.17 13h03RESPONDER
Arlei Ribeiro dos santos
Enviando Comentário Fechar :/
Izidorio Ribeiro bento junior

Izidorio Ribeiro bento junior

Gustavo parabéns, excelente artigo!
Uma curiosidade, Gustavo, existe uma forma nativa para trabalhar com data hora no formato UTC (ainda que no PHP), eu tenho uma aplicação que faz a leitura de rss, e recebo a data hora no seguinte formato:
"Tue, 28 Mar 2017 10:11:46 -0300"
só que para eu salvar isso no banco estou fazendo uma verdadeira bacalhoada. (substr() strpos()) rsss.
★★★★★DIA 28.03.17 10h25RESPONDER
Gustavo Web, Arlei Ribeiro dos santos
Enviando Comentário Fechar :/
Gustavo Web

Gustavo Web

Cara, nunca trabalhei com data assim, e dei uma pesquisada aqui e não encontrei muita coisa sobre trabalhar com data nesse formato! Você tem ela somente nesse formato? Você não tem o UTC (baseado em segundos) pelo menos? Nesse formato não é aceito em datetime ou timestamp... Realmente teria que tocar o terror para converter essa data para um formato válido!

★★★★★DIA 28.03.17 13h02RESPONDER
Izidorio Ribeiro bento junior, Arlei Ribeiro dos santos
Enviando Comentário Fechar :/
Izidorio Ribeiro bento junior

Izidorio Ribeiro bento junior

Sim, eu as recebo no rss.xml no nó pubDate.
★★★★★DIA 28.03.17 13h36RESPONDER
Arlei Ribeiro dos santos
Enviando Comentário Fechar :/
Gustavo Web

Gustavo Web

Vishhh cara, assim realmente eu acredito que você terá que tratar essa string para transformar isso numa data válida. Então pelo que entendi você está consumindo um rss, confere? Se sim, não há muito o que fazer, terá que quebrar essas informações para que possa ser tratado campo a campo.

★★★★★DIA 28.03.17 13h49RESPONDER
Izidorio Ribeiro bento junior, Arlei Ribeiro dos santos
Enviando Comentário Fechar :/
Izidorio Ribeiro bento junior

Izidorio Ribeiro bento junior

Obrigado Gustavo! Até as próximas aulas.
★★★★★DIA 28.03.17 14h28RESPONDER
Arlei Ribeiro dos santos
Enviando Comentário Fechar :/
Reinaldo Dorti

Reinaldo Dorti

show de bola. Parabéns!!
★★★★★DIA 28.03.17 09h16RESPONDER
Gustavo Web, Arlei Ribeiro dos santos
Enviando Comentário Fechar :/
Gustavo Web

Gustavo Web

Faaala Reinaldo, que bom que tenha gostado :)

★★★★★DIA 28.03.17 09h53RESPONDER
Arlei Ribeiro dos santos
Enviando Comentário Fechar :/
Reinaldo Dorti

Reinaldo Dorti

Muito bom.. Bem explicado e de fácil entendimento. Parabéns mesmo..
★★★★★DIA 28.03.17 09h58RESPONDER
Arlei Ribeiro dos santos
Enviando Comentário Fechar :/
Alisson Pereira Santana

Alisson Pereira Santana

Parabéns Gustavo! Como sempre trazendo conteúdo de primeira pra galera. Com essa aula já to até imaginando o quanto de variáveis que serão reduzidas dentro do meu foreach rsrrs
★★★★★DIA 27.03.17 21h18RESPONDER
Gustavo Web, Arlei Ribeiro dos santos
Enviando Comentário Fechar :/
Gustavo Web

Gustavo Web

Essa é a ideia! Muita coisa pode ser passada para que o banco de dados entregue pronto para você... Há dezenas de funções básicas como essas que mostrei nos dois artigos sobre trabalhar com data e hora, que na hora do desenvolvimento, acaba sendo mais fácil e mais rápido fazer esses tratamentos pelo SGDB diretamente.

★★★★★DIA 28.03.17 09h54RESPONDER
Arlei Ribeiro dos santos
Enviando Comentário Fechar :/
Enviando Comentário Fechar :/