1 minute read

Na semana passada publiquei os três primeiros posts da série sobre as novidades do SQL Server 2008, nesta semana darei continuidade falando sobre os novos tipos de dados para armazenamento de data e hora. Para acessar os demais posts desta série clique neste link.

DATA TYPES

A nova versão do SQL Server trouxe novos tipos de dados para facilitar e otimizar o armazenamento de data e hora, a tabela a seguir mostra algumas características destes tipos:

Data Type Formato Range Tamanho em bytes
time hh:mm:ss[.nnnnnnn] 00:00:00.0000000 até 23:59:59.9999999 3 a 5
date YYYY-MM-DD 00001-01-01 até 9999-12-31 3
smalldatetime YYYY-MM-DD hh:mm:ss 1900-01-01 até 2079-06-06 4
datetime YYYY-MM-DD hh:mm:ss[.nnn] 1753-01-01 até 9999-12-31 8
datetime2 YYYY-MM-DD hh:mm:ss[.nnnnnnn] 0001-01-01 00:00:00.0000000 até 9999-12-31 23:59:59.9999999 6 a 8
datetimeoffset YYYY-MM-DD hh:mm:ss[.nnnnnnn] [+|-]hh:mm 00001-01-01 00:00:00.0000000 até 9999-12-31 23:59:59.9999999 (in UTC) 8 a 10

Vejamos agora a criação de uma tabela de exemplo com os novos data types, faremos a inserção de um registro para observarmos o resultado final.

CREATE TABLE [dbo].[ExemploDataType]
(
	[ExemploId] [int] IDENTITY(1,1) NOT NULL PRIMARY KEY,
	[DataTipo1] [smalldatetime] NULL,
	[DataTipo2] [datetime] NULL,
	[DataTipo3] [date] NULL,
	[DataTipo4] [time](7) NULL,
	[DataTipo5] [datetime2](7) NULL,
	[DataTipo6] [datetimeoffset](7) NULL
)
GO

INSERT INTO ExemploDataType 
	(DataTipo1, DataTipo2, DataTipo3,
	 DataTipo4, DataTipo5, DataTipo6)
VALUES 
 	(GetDate(), GetDate(), GetDate(), 
 	 GetDate(), GetDate(), GetDate())
GO

Os registros terão o seguinte aspecto após a inserção:

DataTipo1 (smalldatetime) = 2009-02-16 23:44:00 DataTipo2 (datetime) = 2009-02-16 23:44:07.020

DataTipo3 (date) = 2009-02-16

DataTipo4 (time) = 23:44:07.0200000

DataTipo5 (datetime2) = 2009-02-16 23:44:07.02

DataTipo6 (datetimeoffset) = 2009-02-16 23:44:07.0200000 +00:00

Os tipos Time, Datetime2 e Datetimeoffset podem ainda ser declarados com o valor entre parêntesis variando de 0 a 7, isso indica a precisão no armazenamento.

Os novos data types de data e hora do SQL Server 2008 não foram os únicos incrementos, em posts futuros desta série abordarei outros tipos disponibilizados. Até lá.