O tipo de dado DATE no SQL Server é utilizado para armazenar informações de datas sem a necessidade de registrar o horário. Ele é ideal para aplicações que apenas requerem informações de datas (como aniversários, datas de contratação, etc.), sem precisar do componente de tempo. Neste post, vamos explorar o tipo Date no SQL Server.

O que é o tipo de dado DATE?

No SQL Server, o tipo de dado DATE armazena apenas datas (dia, mês e ano), ignorando o componente de tempo. Esse tipo de dado ocupa 3 bytes de armazenamento, o que o torna mais eficiente do que tipos que incluem informações de tempo, como DATETIME ou DATETIME2.

Características do Tipo DATE:

  • Formato padrão: YYYY-MM-DD (ano-mês-dia).
  • Intervalo de valores: De 0001-01-01 até 9999-12-31.
  • Tamanho de armazenamento: 3 bytes.

Sintaxe do tipo DATE

Ao criar uma tabela ou inserir valores no SQL Server, você pode definir uma coluna como tipo DATE da seguinte forma:

CREATE TABLE Funcionarios (
    FuncionarioID INT PRIMARY KEY,
    Nome VARCHAR(50),
    DataNascimento DATE
);

Neste exemplo, a coluna DataNascimento está definida como tipo DATE, permitindo que apenas informações de datas sejam armazenadas.

Quando usar o tipo DATE

O tipo DATE é ideal em situações onde o horário não é necessário, e você deseja otimizar o uso de espaço ou evitar a inclusão de componentes de tempo. Exemplos incluem:

  1. Datas de aniversário: Um campo DATE é perfeito para armazenar a data de nascimento de usuários ou clientes sem a necessidade de incluir a hora;

  2. Datas de eventos: Para registrar o dia de um evento (como reuniões ou eventos históricos), sem a precisão de horas;

  3. Datas de contratos ou vencimentos: Ideal para registrar datas de contratos, vencimentos de contas ou datas de entrega, onde o horário exato não é relevante.

Como Manipular o Tipo DATE

Aqui estão algumas operações comuns que podem ser realizadas com colunas de tipo DATE.

1. Inserir dados no tipo DATE

Ao inserir valores em uma coluna DATE, o SQL Server aceita datas no formato padrão YYYY-MM-DD:

INSERT INTO Funcionarios (FuncionarioID, Nome, DataNascimento)
VALUES (1, 'João Silva', '1985-04-23');

Nesse exemplo, a data de nascimento “23 de abril de 1985” será armazenada na coluna DataNascimento.

2. Selecionar dados com DATE

Você pode usar uma consulta simples para selecionar registros com base em uma data específica:

SELECT Nome, DataNascimento 
FROM Funcionarios
WHERE DataNascimento = '1985-04-23';

Isso retornará todos os funcionários que nasceram em 23 de abril de 1985.

3. Filtrar dados usando intervalos de data

Com o tipo DATE, você pode facilmente filtrar resultados baseados em intervalos de datas:

SELECT Nome, DataNascimento 
FROM Funcionarios
WHERE DataNascimento BETWEEN '1980-01-01' AND '1990-12-31';

Esse exemplo retorna todos os funcionários nascidos entre 1º de janeiro de 1980 e 31 de dezembro de 1990.

4. Obter a data atual

Para inserir ou consultar a data atual, o SQL Server oferece a função GETDATE(), que retorna a data e hora atuais. No entanto, como o tipo DATE ignora a hora, você pode usar a função CAST para converter GETDATE() em uma data sem tempo:

SELECT CAST(GETDATE() AS DATE) AS DataAtual;

Ou, ao inserir um valor de data atual em uma coluna DATE:

INSERT INTO Funcionarios (FuncionarioID, Nome, DataNascimento)
VALUES (2, 'Maria Souza', CAST(GETDATE() AS DATE));

5. Funções úteis para o tipo DATE

YEAR(): Retorna o ano de uma data.

SELECT YEAR(DataNascimento) 
FROM Funcionarios;

MONTH(): Retorna o mês de uma data.

SELECT MONTH(DataNascimento) 
FROM Funcionarios;

DAY(): Retorna o dia do mês de uma data.

SELECT DAY(DataNascimento) 
FROM Funcionarios;

O SQL Server possui vários tipos diferentes para tratar data e hora, bem como níveis diferentes de intervalo e precisão. Veja:

TipoFormatoIntervaloPrecisãoTamanho (bytes)
Timehh:mm:ss[.nnnnnnn]00:00:00.0000000 até 23:59:59.9999999100 nano segundos3 até 5
DateYYYY-MM-DD0001–01–01 até  9999–12–31<1 dia3
SmalldatetimeYYYY-MM-DD hh:mm:ss1900–01–01 até 2079–06–061 minuto4
DateTime>YYYY-MM-DD hh:mm:ss[.nnn]1753–01–01 até 9999–12–310,00333 segundo8
Datetime2YYYY-MM-DD hh:mm:ss[.nnnnnnn]0001–01–01 00:00:00.0000000  até  9999–12–31 23:59:59.9999999100 nano segundos6 até 8
DatetimeoffsetYYYY-MM-DD hh:mm:ss[.nnnnnnn][+|-]hh:mm0001–01–01 00:00:00.0000000 até 9999–12–31 23:59:59.9999999 (in UTC)100 nano segundos8 até 10
DECLARE
   @data DATETIME = '20041982' //Declara variável @data
BEGIN
   //Converte variável @data para o formato VARCHAR para ser concatenado com 'Data: ' e mostrada no formato brasileiro (parâmetro 105)
   PRINT 'Data: ' + CONVERT(VARCHAR, @data, 105)
END
GO 

Existem outros parâmetros como os 121 e 120 para formatar datas em outros formatos.

Use DATE quando você precisar apenas de informações de data, sem componentes de tempo;

Use DATETIME ou DATETIME2 quando precisar armazenar tanto a data quanto a hora com precisão.

O tipo de dado DATE no SQL Server é a escolha ideal para armazenar informações de data de maneira eficiente, sem o componente de tempo.

Ele economiza espaço em comparação com tipos mais complexos, como DATETIME, e é perfeito para situações em que o horário não é relevante.

Ao compreender como inserir, manipular e consultar dados de tipo DATE, você estará melhor preparado para otimizar suas consultas e manter a integridade dos dados relacionados a datas em suas aplicações.

APRENDA BANCO DE DADOS SQL DO BÁSICO AO AVANÇADO!

Domine os principais comandos, Operadores, Manipulação de dados, Funções, Drop e Uploads, Query, SubQuerys, Views, Segurança e muito mais!

O acesso ao nosso curso é vitalício e com suporte exclusivo.

CLIQUE NA IMAGEM ABAIXO PARA MAIS DETALHES:

linux dicas e truques

CLIQUE AQUI E SAIBA MAIS

Dúvidas ou sugestões sobre o tipo Date no SQL Server? Deixem nos comentários! Para mais dicas, acesse o nosso canal no YouTube:
https://youtube.com/criandobits

Tags:

Quer receber GRÁTIS o e-book "Como Formatar um Computador em 5 Minutos"?

Não enviamos spam. Seu e-mail está 100% seguro!

Sobre o Autor

Bene Silva Júnior
Bene Silva Júnior

Bacharel em Sistemas de Informação pelo Instituto Paulista de Pesquisa e Ensino IPEP. Apaixonado por tecnologias e games do tempo da vovó!

0 Comentários

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *