MySQL trabalhando com datas
Datas do MySQL
A parte mais difícil ao trabalhar com datas é ter certeza de que o formato da data que você está tentando inserir corresponde ao formato da coluna de data no banco de dados.
Desde que seus dados contenham apenas a parte da data, suas consultas funcionarão conforme o esperado. No entanto, se uma porção de tempo estiver envolvida, fica mais complicado.
Tipos de dados de data do MySQL
O MySQL vem com os seguintes tipos de dados para armazenar uma data ou um valor de data/hora no banco de dados:
-
DATE
- formato AAAA-MM-DD -
DATETIME
- formato: AAAA-MM-DD HH:MI:SS TIMESTAMP
- formato: AAAA-MM-DD HH:MI:SS-
YEAR
- formato YYYY ou YY
Nota: O tipo de dados de data é definido para uma coluna quando você cria uma nova tabela em seu banco de dados!
Trabalhando com datas
Observe a tabela a seguir:
Tabela de pedidos
OrderId | ProductName | OrderDate |
---|---|---|
1 | Geitost | 2008-11-11 |
2 | Camembert Pierrot | 2008-11-09 |
3 | Mozzarella di Giovanni | 2008-11-11 |
4 | Mascarpone Fabioli | 2008-10-29 |
Agora queremos selecionar os registros com OrderDate de "2008-11-11" da tabela acima.
Usamos a seguinte SELECT
declaração:
SELECT * FROM Orders WHERE OrderDate='2008-11-11'
O conjunto de resultados ficará assim:
OrderId | ProductName | OrderDate |
---|---|---|
1 | Geitost | 2008-11-11 |
3 | Mozzarella di Giovanni | 2008-11-11 |
Nota: Duas datas podem ser facilmente comparadas se não houver nenhum componente de tempo envolvido!
Agora, suponha que a tabela "Pedidos" tenha esta aparência (observe o componente de tempo adicionado na coluna "Data do pedido"):
OrderId | ProductName | OrderDate |
---|---|---|
1 | Geitost | 2008-11-11 13:23:44 |
2 | Camembert Pierrot | 2008-11-09 15:45:21 |
3 | Mozzarella di Giovanni | 2008-11-11 11:12:01 |
4 | Mascarpone Fabioli | 2008-10-29 14:56:59 |
Se usarmos a mesma SELECT
declaração acima:
SELECT * FROM Orders WHERE OrderDate='2008-11-11'
não teremos resultado! Isso ocorre porque a consulta está procurando apenas datas sem porção de tempo.
Dica: Para manter suas consultas simples e fáceis de manter, não use componentes de tempo em suas datas, a menos que seja necessário!