Os tipos DATETIME, DATE,
          e TIMESTAMP são relacionados. Esta seção
          descreve suas características, como eles se assemelham ou
          como se diferem.
        
          O tipo DATETIME é usado quando você
          precisa de valores que contém informações sobre data e a a
          hora. MySQL recupera e mostra valores
          DATETIME no formato 'YYYY-MM-DD
          HH:MM:SS'. A faixa suportada é de
          '1000-01-01 00:00:00' até
          '9999-12-31 23:59:59'. (``Suportada''
          significa que embora valores anteriores possam funcionar, não
          há nenhura garantia de disto.)
        
          O tipo DATA é usado quando se necessita
          apenas do valor da data, sem a parte da hora. MySQL recupera e
          mostra valores do tipo DATA no formato
           'YYYY-MM-DD'. A faixa suportada é de
          '1000-01-01' até
          '9999-12-31'.
        
          A coluna do tipo TIMESTAMP possui
          comportamento e propriedade variado, dependendo da versão do
          MySQL e do modo SQL que o servidor está executando.
        
          Comportamento do
          TIMESTAMP ao executar no modo
          MAXDB
        
          Quando o MySQL está executando no modo
          SQPDB, o TIMESTAMP
          comporta como DATETIME. Nenhuma
          atualização automática da coluna
          TIMESTAMP ocorre, como descrito no
          parágrafo seguinte. O MySQL pode ser executado no modo
          MAXDB a partir da versão 4.1.1. See
          Secção 4.1.1, “Opções de Linha de Comando do mysqld”.
        
          Comportamento do
          TIMESTAMP quando não está executando no
          modo MAXDB
        
          O tipo de campo TIMESTAMP fornece um tipo
          que pode ser usado para, automaticamente, marcar operações
          INSERT or UPDATE com a
          data e hora atual. Se você tiver multiplas colunas
          TIMESTAMP, só a primeira é atualizada
          automaticamente.
        
          Atualizações automaticas da primeira coluna
          TIMESTAMP ocorrem sob qualquer uma das
          seguintes condições:
        
              A coluna não é explicitamente especificada em uma
              instrução INSERT ou LOAD
              DATA INFILE.
            
              A coluna não é explicitamente especificada em uma
              instrução UPDATE e e alguma outra
              coluna muda o valor. (Note que um
              UPDATE que coloca em uma coluna o mesmo
              valor que ele já possui não irá causar a atualização
              da coluna TIMESTAMP, porque se você
              atribui a uma coluna o seu valor atual, MySQL ignora a
              atualização para maior eficiência).
            
              Você define explicitamente a uma coluna
              TIMESTAMP o valor
              NULL.
            
          Outras colunas TIMESTAMP, além da primeira
          podem ser definidas com a data e hora atuais. Basta defini-las
          com NULL ou NOW()
        
          Você pode definir colunas TIMESTAMP com um
          valor diferente da data e hora atuais colocando explicitamente
          o valor desejado. Isto é verdade mesmo para a primeira coluna
          TIMESTAMP. Você pode usar esta propriedade
          se, por exemplo, você quiser que um
          TIMESTAMP tenha seu valor definido como a
          data e hora atuais na criação de registros, mas não quer
          alterá-los quando o registro for atualizado mais tarde:
        
Deixe o MySQL definir a coluna quando o registro é criado. Isto irá inicializa-la com a data e hora atuais.
              Quando você realizar subsequentes atualizações em
              outras colunas do registro, defina explicitamente a coluna
              TIMESTAMP com o valor atual.
            
          Por outro lado, você pode achar que é mais fácil usar uma
          coluan DATETIME que você inicializa com
          NOW() quando o registro for criado e deixa
          como está em atualizações subsequentes.
        
          Propriedades
          TIMESTAMP quando executando no modo
          MAXDB
        
          Quando o MySQL está executando no modo
          MAXDB, TIMESTAMP é
          idêntico ao DATETIME. Ele usa o mesmo
          formato para armazenar e mostrar valores, e ele tem a mesma
          faixa. O MySQL pode ser executado no modo
          MAXDB a partir da versão 4.1.1. See
          Secção 4.1.1, “Opções de Linha de Comando do mysqld”.
        
          Propriedades
          TIMESTAMP a partir do MySQL 4.1 quando não
          executado no modo MAXDB
        
          No MySQL 4.1.0, colunas TIMESTAMP são
          armazenadas e mostradas no mesmo formato que colunas
          DATETIME. Isto também significa que ele
          não podem ser estreitados ou alargados nos modos descritos no
          parágrafo seguinte. Em outras palavras, você não pode usar
          TIMESTAMP(2),
          TIMESTAMP(4), etc. Em outros casos, as
          propriedades são as mesmas de versões MySQL anteriores.
        
          Propriedades
          TIMESTAMP antes do MySQL 4.1
        
          Valores TIMESTAMP podem ter valores do
          incio de 1970 até algum momento do ano 2037, com a
          resolução de um segundo. Valores são mostrados como
          números
        
          O formato no qual o MySQL recupera e mostra valores
          TIMESTAMP depende do tamanho do display,
          como ilustrado pela tabela que se segue: O formato `cheio'
          TIMESTAMP é de 14 digitos, mas colunas
          TIMESTAMP podem ser criadas com tamanho de
          display menores:
        
| Tipo da Coluna | Formato do Display | 
| TIMESTAMP(14) | YYYYMMDDHHMMSS | 
| TIMESTAMP(12) | YYMMDDHHMMSS | 
| TIMESTAMP(10) | YYMMDDHHMM | 
| TIMESTAMP(8) | YYYYMMDD | 
| TIMESTAMP(6) | YYMMDD | 
| TIMESTAMP(4) | YYMM | 
| TIMESTAMP(2) | YY | 
          Todas as colunas TIMESTAMP tem o mesmo
          tamanho de armazenamento, independente do tamanho de display.
          Os tamanhos de display mais comuns são 6, 8, 12, e 14. Você
          pode especificar um tamanho de display arbitrario na hora da
          criação da tabela, mas valores de 0 ou maiores que 14 são
          mudados para 14. Valores ímpares de tamanho na faixa de 1 a
          13 são mudados para o maior número par mais próximo.
        
          Nota: Na versão 4.1,
          TIMESTAMP é retornado com uma string com o
          formato 'YYYY-MM-DD HH:MM:SS', e timestamp
          de diferentes tamamnhos não são mais suportados.
        
          Você pode especificar calores DATETIME,
          DATE e TIMESTAMP usando
          qualquer conjunto de formatos comum:
        
              Como uma string nos formatos 'YYYY-MM-DD
              HH:MM:SS' ou 'YY-MM-DD
              HH:MM:SS'. Uma sintaxe ``relaxada'' é
              permitida---nenhum caracter de pontuação pode ser usado
              como um delimitador entre parte de data ou hora. Por
              exemplo, '98-12-31 11:30:45',
              '98.12.31 11+30+45', '98/12/31
              11*30*45', e '98@12@31
              11^30^45' são equivalentes.
            
              Como uma string nos formatos
              'YYYY-MM-DD' ou
              'YY-MM-DD'. Uma sintaxe ``relaxada'' é
              permitida aqui também. Por exemplo,
              '98-12-31',
              '98.12.31',
              '98/12/31', e
              '98@12@31' são equivalentes.
            
              Como uma string sem delimitadores nos formatos
              'YYYYMMDDHHMMSS' ou
              'YYMMDDHHMMSS', desde que a string
              faça sentido como data. Por example,
              '19970523091528' e
              '970523091528' são interpretadas com
              '1997-05-23 09:15:28', mas
              '971122129015' é ilegal (tem uma parte
              de minutos sem sentido) e se torna '0000-00-00
              00:00:00'.
            
              Como uma string sem delimitadores nos formatos
              'YYYYMMDD' ou
              'YYMMDD', desde que a string tenha
              sentido com data. Por exemplo,
              '19970523' e
              '970523' são interpretedas como
               '1997-05-23', mas
              '971332' é ilegal (tem uma parte de
              mês sem sentido) e se torna
              '0000-00-00'.
            
              Como um número nos formatos
              YYYYMMDDHHMMSS ou
              YYMMDDHHMMSS, desde que o número faça
              sentido como uma data. Por exemplo,
              19830905132800 e
              830905132800 são interpretedos como
              '1983-09-05 13:28:00'.
            
              Como um número nos formatos YYYYMMDD
              ou YYMMDD, desde que o número faça
              sentido como data. Por exemplo,
              19830905 e 830905
              são interpretedos como '1983-09-05'.
            
              Como o resultado de uma função que retorne uma valor
              aceitavel em um contexto DATETIME,
              DATE ou TIMESTAMP,
              tal como NOW() ou
              CURRENT_DATE.
            
          Valores DATETIME, DATE,
          ou TIMESTAMP ilegais são convertidos para
          o valor ``zero'' do tipo apropriado ('0000-00-00
          00:00:00', '0000-00-00', ou
          00000000000000).
        
          Para valores especificados com strings que incluem
          delimitadores de data, não é necessário especificar dois
          digitos para valores de mês ou dia qua são menores que
          10. '1979-6-9' é o
          mesmo que '1979-06-09'. Similarmente, para
          valores especificados como strings que incluem delimitadores
          de hora, não é necessário especificar dois digitos para
          valores de hora, minutos ou segundo que são menores que
          10. '1979-10-30 1:2:3'
          Ré o mesmo que '1979-10-30 01:02:03'.
        
          Valores especificados como números devem ter 6, 8, 12, ou 14
          digitos. Se o número é de 8 ou 14 digitos, ele assume estar
          no formato YYYYMMDD ou
          YYYYMMDDHHMMSS e que o ano é dado pelos 4
          primeiros dígitos. Se o é de 6 ou 12 dígitos, ele assume
          estar no formato YYMMDD or 
          YYMMDDHHMMSS e que o ano é dado pelos 2 primeiros
          digitos. Números que não possua estes tamanho são
          interpretados como calores preenchidos com zero até o tamanho
          mais próximo.
        
          Valores especificados como strings não delimitadas são
          interpretados usando o seu tamanho como dado. Se a string
          possui 8 ou 14 caracteres, o ano é assumido como os 4
          primeiros caracteres. De outra forma o assume-se que o ano
          são os 2 primeiros caracteres. A string é interpretadada
          esquerda para direita para encontrar os valores do ano, mês,
          dia, hora, minute e segundo, para as partes da string. Isto
          significa que você não deve utilizar strings com menos de 6
          caracteres. Por exemplo, se você especificar
          '9903', pensando em representar Março de
          1999, você perceberá que o MySQL insere uma data ``zero'' em
          sua tabela. Isto ocorre porque os valores do ano e mês são
          99 e 03, mas a parte
          contendo o dia não existe (zero), então o valor não é uma
          data legal. No entanto, a partir do MySQL 3.23, você pode
          especificar explicitamente um valor de zero para representar
          dia ou mês faltantes. Por exemplo, você pode usar
          '990300' para inserir o valor
          '1999-03-00'.
        
          Colunas TIMESTAMP armazena valores legais
          utilizando precisão total com a qual os valores foram
          especificados, independente do tamanho do display. Isto tem
          diversas implicações:
        
              Sempre especifique o ano, mês e dia, mesmo se seus tipos
              de coluna são TIMESTAMP(4) ou
              TIMESTAMP(2). De outra forma, os
              valores não serão datas legais date e um
              0 será armazenado.
            
              Se você usa ALTER TABLE para aumentar
              uma coluna TIMESTAMP, informações
              serão mostradas como se antes estivessem ``escondidas''.
            
              De forma similar, reduzindo o tamanho de uma coluna
              TIMESTAMP não causa perda de
              informação, exceto no sentido de que menos informação
              aparece quando os valores são mostrados.
            
              Embora os valores TIMESTAMP sejam
              armazenados com precisão total, a única função que
              opera diretamente com o valor armazenado é
              UNIX_TIMESTAMP(). OUtras funções
              operam com o formato do valor recuperado Isto significa
              que não se pode usar funções como
              HOUR() or SECOND() a
              menos que a parte relevante do valor
              TIMESTAMP esteja incluído no valor
              formatado. POr exemplo, a parte HH de
              uma coluna TIMESTAMP não é mostrada a
              menos que o tamanho do display seja de pelo menos 10, logo
              tentar usar HOUR() em um valor
              TIMESTAMP menor produz um resultado sem
              significado.
            
Você pode, algumas vezes, atribuir valores de um tipo de data para um objeto de um diferente tipo de data. No entanto pode haver algumas alterações de valores ou perda de informação
              Se você atribuir um valor de DATE
              value a um objeto DATETIME ou
              TIMESTAMP, a parte da hora do valor
              resultante é definido como '00:00:00',
              porque o vlaor DATE não contém
              informações de hora.
            
              Se você atribuir um valor DATETIME ou
              TIMESTAMP para um objeto
              DATE, a parte da hora do valor
              resultante é deletado, pois o tipo
              DATE não armazena informações de
              hora.
            
              Lembre-se de que embora todos os valores
              DATETIME, DATE, e
              TIMESTAMP possam ser especificados
              usando o mesmo conjunto de formatos, os tipos não tem a
              mesa faixa de valores. Por exemplo, valores
              TIMESTAMP não podem ser anteriores a
              1970 ou posteriores a
              2037. Isto significia que datas como
              '1968-01-01', são permitidas como
              valores DATETIME ou
              DATE, mas não são válidas para
              valores TIMESTAMP e serão covertidas
              para 0 se atribuidas para tais objetos.
            
Esteja ciente de certas dificuldades quando especificar valores de data:
              A forma ``relaxada'' permitida em valores especificados
              com strings podem causar certas confusões. Por exemplo,
              um valor como '10:11:12' pode parecer
              com um valor de hora devido ao limitador
              ‘:’, mas se usado em um
              contexto de data será interpretado como o ano
              '2010-11-12'. O valor
              '10:45:15' será convertido para
              '0000-00-00' pois
              '45' não é um valor de mês
              permitido.
            
              O servidor MySQL funciona basicamente checando a validade
              da data: dias entre 00-31, mês entre
              00-12, anos entre
              1000-9999. Qualquer data que não
              esteja nesta faixa será revetida para
              0000-00-00. Por favor, note que isto
              ainda lhe permite armazenar datas invalidas tais como
              2002-04-31. Isto permite a aplicações
              web armazenar dados de um formulário sem verificações
              adicionais. Para assegurar que a data é valida, faça a
              checagem em sua aplicação.
            
Valores de anos especificados com 2 digitos são ambíguos, pois o século não é conhecido. MySQL interpreta valores de anos com dois digitos usando as seguintes regras:
                  Valores de ano na faixa de 00-69
                  são convertidos para 2000-2069.
                
                  Valores de ano na faixa de 70-99
                  são convertidos para 1970-1999.
                
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.

