[+/-]
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 MySQL 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, MySQL 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 MySQL 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 MySQL 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 MySQL 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 campo
TIME
, 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 valor
``zero'' 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'
ou 0
, o que é
mais fácil de escrever.
Valores ``zero'' para data ou hora usados em
MyODBC são convertidos
automaticamente para NULL
na versão
2.50.12 MyODBC e acima,
porque ODBC não pode tratar tais valores.
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.