Inicial > Não categorizado > Posso trocar DateTime por Date?

Posso trocar DateTime por Date?

Galera, dica rápida.

Essa semana estou revisando meus arquivos que uso no treinamento de SQL Server que ministro, e tem um tópico onde falo da importancia de escolher os datatypes corretos para as colunas de nossas tabelas.

Isso é, quando possível, trocar BigInt por Integer, Integer por SmallInt, SmallInt por TinyInt e por ai vai…

Foi ai que cheguei na seguinte situação:

Muitas vezes podemos trocar DateTime por SmallDateTime, pois raramente precisamos dos segundos na data, e muitas vezes precisamos apenas da data, nem precisamos da hora. Isso me leva a dizer o seguinte, podemos trocar DateTime por Date, certo?…

Desta forma ganhariamos 5 bytes de espaço para cada valor gravado na coluna, pois o DateTime ocupa 8 bytes contra apenas 3 do Date. Bom dito isso chegamos onde eu queria, me diga uma coisa.

Veja que a consulta abaixo retorna:

DECLARE @Data DateTime
SET @Data = NULL
SELECT ISNULL(@Data, 0)

 

clip_image002

Ou seja, o SQL Server entende que 0 significa 1900-01-01… interessante.

Agora vamos ver o que acontece quando trocamos a variavél para Date:

DECLARE @Data Date
SET @Data = NULL
SELECT ISNULL(@Data, 0)

Msg 206, Level 16, State 2, Line 3

Operand type clash: int is incompatible with date

Conclusão, se você estiver fazendo uma conversão implicita de 0 para datetime e trocar os datatype de sua tabela de DateTime para Date, pode ser que alguns erros comecem a acontecer no seu aplicativo.

Portanto fica ai a dica, cuidado…

Categorias:Não categorizado
  1. Nenhum comentário ainda.
  1. No trackbacks yet.

Deixe um comentário