Menu

Blog Neste espaço compartilhamos algunas experiências e informações relacionadas ao Access e ao Office.
Preencha o formulário para ficar por dentro das novidades em nosso site.

Resolvendo problemas com datas no SQL Server

Um dos grandes problemas que surgem quando migramos uma base de dados Access para SQL Server é relacionado às datas. Isto por que o Access gerencia as datas de uma forma diferente do SQL Server, mesmo sendo ambos os softwares do mesmo fabricante, a Microsoft.

O Access, com o motor Jet/AceDAO, geralmente utiliza como referência de formato de data a máquina onde está instalado - em máquinas com Windows em inglês, por exemplo, as datas são formatadas como mês/dia/ano. Isto costuma gerar muita confusão, principalmente em ambientes onde o Windows está em português e o Office em inglês ou vice-versa. Já o SQL Server trata, por definição, as datas como ano/mês/dia.

Com isto, há o risco de as datas serem interpretadas erroneamente, por exemplo 03/02 (fevereiro) ser interpretado como março, ou vice-versa. Para fins de busca, é um elemento muito complicador, pois pode gerar um indicador errado e tornar o sistema não confiável. E isto, por consequência, pode impactar na relação entre o cliente e o desenvolvedor.

Ao longo dos anos enfrentamos este problema em diversas vezes, e por isso adotamos uma solução que compartilho neste artigo. Adotamos uma padronização nas datas, formatando todas como ano/mês/dia, sendo o ano com 4 dígitos e ps demais com 2. Ao ler a informação no banco de dados, adotamos a formatação visual de acordo com o idioma do sistema, e ao registrar as informações, revertemos a formatação. À primeira vista isto pode soar confuso, mas é uma solução viável e que resolve, em definitivo, o problema com a exibição e tratamento das datas.

Dou um exemplo: imagine uma tela onde você tenha um filtro de período, o usuário digita 01/02/2011 (1º de fevereiro de 2011) como início e 12/02/2011 como término. Ao solicitar a listagem (com base nos filtros), fazemos a conversão das datas para, respectivamente, 2011-02-01 e 2011-02-12 e enviamos o comando SQL para o servidor processar a informação. Ao retornar a informação na lista, revertemos o formato e exibimos 01/02/2011 e 12/02/2011. Com isso, não há como ocorrer falha na interpretação das datas, pois o formato informado é o padrão adotado pelo SQL Server.

Para uma maior eficiência na codificação, você pode transformar este processo em uma função independente, recebendo uma data e transformando-a em texto para o SQL.

Public Sub FormatarData(dtReferencia as Date) as String
FormatarData = "'" & Format(dtReferencia,"yyyy-mm-dd") & "'"
End Sub

Deixe um comentário

Certifique-se de preencher os campos indicados com (*). Não é permitido código HTML.

voltar ao topo
The Best betting exchange Bonus BetFair
Reviw on bokmaker Number 1 in uk ArtBetting.net William Hill best bookies
Themes Download - Bigtheme.net
UK Betting sites