Tipos de Data e Hora
Os tipos de data e hora são DATETIME
, DATE
, TIMESTAMP
, TIME
, e YEAR
. Cada um desses tipos tem uma faixa de valores legais, assim com um valor zero
que é usado quando você especifica um valor ilegal. Note que o MariaDB permite que você armazene certos valores de datas inexistentes, como 1999-11-31
. A razão para isto é que pensamos que é responsabilidade do aplicativo tratar das verificações de data, não do servidor SQL. Para fazer uma verificação 'rápida' de data, MariaDB só checa se o mês está na faixa de 0-12 e o dia está na faixa de 0-31. As faixas acima são definidas desta forma porque MariaDB lhe permite armazenar, em um campo DATE
ou DATETIME
, datas onde o dia ou o dia/mês são zero. Isto é extremamente útil para aplicativos que precisam armazenar uma data de nascimento na qual você não sabe a data exata. Nestes casos você simplesmente armazena a data como 1999-00-00
ou 1999-01-00
. (Você não pode esperar obter um valor correto para funções como DATE_SUB()
ou DATE_ADD
para datas como estas.)
Aqui estão algumas considerações para ter em mente quando estiver trabalhando com tipos de data e hora.
- MySQL recupera valores para um tipo de data ou hora dado em um formato padrão, mas ele tenta interpretar uma variedade de formatos para os valores fornecidos (por exemplo, quando você especifica um valor a ser atribuido ou comparado a um tipo de data ou hora). No entanto, só os formatos descritos na seção seguinte são suportados. É esperado que você forneça valores permitidos. Resultados imprevisiveis podem ocorrer se você usar outros formatos.
- Embora o MariaDB tente interpretar valores em diversos formatos, ele sempre espera que a parte da data referente ao ano esteja mais a esquerda do valor. Datas devem ser dadas na ordem ano-mês-dia (por exemplo,
'98-09-04'
), ao invés das ordens mais usadas mês-dia-ano ou dia-mês-ano (por exemplo:'09-04-98'
,'04-09-98'
). - MySQL converte automaticamente um tipo de data ou hora em um número se o valor é usado em um contexto numérico, e vice-versa.
- Quando o MariaDB encontra um valor para um tipo de data ou hora que está fora da faixa permitida ou é ilegal neste tipo (veja o início desta seção), ele converte o valor para
zero
. (A exceção ocorre no campoTIME
, onde o valor fora da faixa é ajustado para o valor limite apropriado na faixa de valores deste tipo.) A tabela abaixo mostra o formato do valorzero
para cada tipo:Tipo de Coluna Valor Zero
DATETIME
'0000-00-00 00:00:00'
DATE
'0000-00-00'
TIMESTAMP
00000000000000
(tamanho depende do tamanho do display)TIME
'00:00:00'
YEAR
0000
- Os valores
zero
são especiais, mas você pode armazenar ou fazer referência a eles explicitamente usando os valores mostrados na tabela. Você também pode fazer into usando'0'
ou0
, o que é mais fácil de escrever. - Valores
zero
para data ou hora usados em MyODBC são convertidos automaticamente paraNULL
na versão 2.50.12 MyODBC e acima, porque ODBC não pode tratar tais valores.