domingo, 21 de outubro de 2012

Neste post estarei mostrando como é possível manipular datas no banco de dados, utilizando apenas algumas das funções disponíveis.
Primeiramente, vamos criar um novo banco de dados.

CREATE DATABASE teste_data;

Vamos nos conectar ao banco.

USE teste_data;

E criar uma tabela para que podemos com os campos necessários.

CREATE TABLE clientes (
   id INT PRIMARY KEY NOT NULL AUTO_INCREMENT,
   nome VARCHAR(30),
   endereco VARCHAR(30),
   telefone VARCHAR(15),
   data_nasc DATE);

Para podemos manipular esta tabela, vamos inserir alguns registros.

Vale lembrar que no MySQL as datas são representadas como: YYYY-MM-DD.

Para inserir os dados no MySQL, não devemos usar nada (traço, barra, underline) para separar o ano do mês e o mês do dia.

Data: 10/02/1990:
INSERT INTO clientes VALUES (null, "Joaozinho", "Rua AAA", "5555-5555", 19900210);
Data: 30/10/1994
INSERT INTO clientes VALUES (null, "Maria", "Rua BBB", "3333-3333", 19941030);

Data: 22/05/1985

INSERT INTO clientes VALUES (null, "Pedrinho", "Rua CCC", "9999-9999", 19850522);


Usando a Data Atual

Já pensou ter que ficar digitando a data atual toda hora ao inserir em algum registro que precise usar a data de hoje?
O MySQL possui um comando chamado CURDATE() ou também Current Date que chama a data atual.

Digamos que o "José" nasceu no dia de hoje.

INSERT INTO clientes VALUES (null, "Jose", "Rua DDD", "1111-1111", CURDATE());

Obs: O CurDate() retorna tanto a data atual quanto a hora atual. Pode-se usar para retornar apenas a data o comando Now().



Extraindo Ano, Mês ou Dia

É interessante usar o Extract quando precisamos pegar apenas o ano ou o mês (ou dia) de algum registro.
Por exemplo: Queremos ver apenas os clientes nascidos em 1994.

Vou inserir mais um registro nascido em 1994.



Data: 01/02/1994
INSERT INTO clientes VALUES (null, "Joaquim", "Rua EEE", "3333-3333", 19940203);

Sintaxe:

EXTRACT(#tipo# FROM #campo_data#)

Onde #tipo# = YEAR, MONTH ou DAY.

Agora vamos selecioná-los:

SELECT * FROM clientes WHERE EXTRACT(YEAR FROM data_nasc) = '1994';

A mesma coisa funciona para meses e dias, use MONTH para meses e DAY para dias.


Retornando a diferença de dias entre duas datas.

Sintaxe:

DATEDIFF(#data1#, #data2#);

Quantidade de dias entre 21-10-2012 [HOJE] e 2012-10-23 [Daqui a dois dias]

SELECT DATEDIFF('2012-10-23','2012-10-21');


Subtraindo/Adicionando Dias, Meses e Anos

Usamos o DATE_SUB() quando precisamos retornar valores de dias atrás, por exemplo: vamos subtrair 5 dias de cada data.

Sintaxe:

SELECT #campo1#, #campo2#, #campoN# DATE_SUB(#campo_data#, INTERVAL #N# #tipo#) FROM #tabela#;

Onde #tipo# = YEAR, DAY ou MONTH.

SELECT nome, DATE_SUB(data_nasc, INTERVAL 5 DAY) FROM clientes;

Neste caso, serão subtraídos 5 dias da data dos registros. Podemos somar valores utilizando DATE_ADD().

SELECT nome, DATE_ADD(data_nasc, INTERVAL 5 DAY) FROM clientes;



É isso aí, essas são algumas das básicas funções de manipulação de datas do MySQL.
Abraços e até a próxima.

Categories: ,

2 comentários:

  1. Estou precisando de um programador que possa fazer um banco de dados para um software simples de gerenciamento de salão de beleza em mysql...interessados entre em contado, para podermos negociarmos. Email: thallesgomes1995@gmail.com

    ResponderExcluir
  2. Anônimo27.1.14

    Gostaria de uma ajuda sou bem curiosa e tenho minha própria loja online mas meu fornecedor ofereceu o banco de dados aos seus usuários mas precisa de um ip fixo, e ai mora minha duvida, o ip é do computador ou é aquele ip que aparece no ftp? tem como me ajudar.

    ResponderExcluir