Clique aqui para ler esse artigo em PDF.imagem_pdf.jpg

capa_NET36_G.gif

Clique aqui para ler todos os artigos desta edição

Trabalhando com datas e conversões no SQL Server 2000

 

Este artigo discute

Este artigo usa as seguintes tecnologias

  • Os tipos de dados DateTime e SmallDateTime;
  • Como o SQL Server armazena os valores data e hora;
  • Datas/Horas no SQL Server;
  • Funções e conversões.

SQL Server.

 

Uma reclamação muito comum de desenvolvedores está na aparente dificuldade em trabalhar com valores de data e hora no SQL Server. Digo aparente, porque a grande verdade é que para trabalhar com data e hora no SQL Server, a primeira coisa a fazer é entender como os valores do tipo data/hora são armazenados.

É verdade que infelizmente o SQL Server não possui um tipo de dados que seja apenas data e outro que seja apenas hora. Mas a partir do momento que você entender como o SQL Server armazena e trata esses dados, você verá que trabalhar com data e hora no SQL Server é um processo bastante simples.

Neste artigo apresentarei os dois tipos de dados que o SQL Server possui para se trabalhar com valores data e hora, como esses tipos se diferenciam um do outro e são armazenados, e como trabalhar com esses valores.

Veremos também algumas funções internas do SQL Server que simplificam muito o tratamento e trabalho com datas no SQL Server.

 

Os tipos de dados DateTime e SmallDateTime

O SQL Server suporta dois tipos de dados para trabalhar com valores data e hora. São eles: DateTime e SmallDateTime. A diferença básica entre esses dois, está na quantidade de bytes utilizados para o armazenamento, o range de datas suportadas e suas precisões.

Enquanto o DateTime usa 8 bytes para o armazenamento, o SmallDateTime usa apenas 4 bytes. É por essa razão que o DateTime consegue armazenar um range maior de datas e também possui uma maior precisão que o SmallDateTime.

O DateTime armazena datas de 1 de Janeiro de 1753 até 31 de Dezembro de 9999 com uma precisão de 3.33 milissegundos ou 0.00333 segundos. Os valores são arredondados para incrementos de .000, .003 ou .007 segundos, como mostrado na Tabela 1

 

Exemplo

Arredondamento

01/01/98 23:59:59.999

1998-01-02 00:00:00.000

01/01/98 23:59:59.995, 01/01/98 23:59:59.996,

01/01/98 23:59:59.997 ou 01/01/98 23:59:59.998

1998-01-01 23:59:59.997

01/01/98 23:59:59.992, 01/01/98 23:59:59.993,

01/01/98 23:59:59.994

1998-01-01 23:59:59.993

01/01/98 23:59:59.990 ou 01/01/98 23:59:59.991

1998-01-01 23:59:59.990

Tabela 1. Exemplos de arredondamento com DataTime

Observe que os horários com milissegundos entre .990 e .991 foram arredondados para .990. Os valores entre .992 e .994 foram arredondados para .993 e os valores entre .995 e .998 foram arredondados para .997 ...

Quer ler esse conteúdo completo? Tenha acesso completo