MCDBA Brasil


  • Home
  • Sobre
  • Contato

Livros





Links Rápidos

SQL Server Builds (All Versions/Editions)


Download SQL Server 2017 (trial)


SQL Server 2017 Feature Pack


SQL Server 2016 Feature Pack


Cumulative Update SQL Server 2017 builds


Cumulative Update SQL Server 2016 builds


Cumulative Update SQL Server 2014 builds


Cumulative Update SQL Server 2012 builds


SQL Server 2005/2008 Samples Databases


Documentando o Servidor SQL Server


Analisando a Performance do Servidor-CheckList


Virtual PASS PT


Faça parte do maior virtual chapter do PASS com conteúdos técnicos em Português sobre SQL Server.

Todos os meses um evento Online para você! Acompanhe aqui os WebCasts já agendados

Sindicalize seu blog ou site ao VirtualPASSPT

SQL Server Blogs

SQL Server Query Processing Team


SQL Programmability & API Development Team


SQL Server Manageability Team


Latin America Support Team


Database + Disk + Performance


Microsoft SQL Server Support


SQL CLR Team


SQL Query Optimization Team


SQL 2005 Code Samples


SQL Server Express Team


SQL SMO Samples


SQL Storage Engine Team


SQL CAT Team


SQL Protocols Team


PSS SQL Server Engineers


Slava Oks on SQLOS


Ken Henderson’s blog


LUTI@Microsoft Blog


kimberly L. Trip’s blog


Fernando Garcia Blog

Dica da Semana

Utilizando ORDER BY em campos do tipo DATA

por Nilton Pinheiro agosto 17, 2004 Nenhum comentário

A cláusula ORDER BY é utilizada para ordenar os dados retornados por uma consulta. Por Exemplo:


SELECT fname, hire_date FROM employee
WHERE fname like ‘P%’
ORDER BY fname


fname                hire_date              
————— ————————
Palle                 1993-05-09 00:00:00.000
Paolo                1992-08-27 00:00:00.000
Patricia             1989-08-01 00:00:00.000
Paul                  1993-08-19 00:00:00.000
Paula                1994-01-19 00:00:00.000
Pedro                1990-12-24 00:00:00.000
Peter                1992-05-17 00:00:00.000
Philip                1989-11-11 00:00:00.000
Pirkko               1993-11-29 00:00:00.000


O PROBLEMA:


Não é raro que ao recuperar datas do banco de dados, precisamos ou queremos que a recuperação seja feita em um formato já pronto para exibição. Para tanto, utiliza-se a função CONVERT.
O problema é que a utilização do ORDER BY em consultas com campos do tipo data, onde o campo é convertido para VARCHAR no mesmo SELECT, pode fazer com que os resultados obtidos não sejam os esperados. Por Exemplo:


SELECT fname, CONVERT (varchar,hire_date,103) AS hire_date FROM pubs..employee
WHERE fname LIKE ‘P%’
ORDER BY hire_date


OU


SELECT fname, CONVERT (varchar,hire_date,103) AS Data FROM pubs..employee
WHERE fname LIKE ‘P%’
ORDER BY Data


fname                hire_date
——————– ———-
Patricia             01/08/1989
Palle                09/05/1993
Philip               11/11/1989
Peter                17/05/1992
Paula                19/01/1994
Paul                 19/08/1993
Pedro                24/12/1990
Paolo                27/08/1992
Pirkko               29/11/1993


Talvez você não note de imediato, mas o ORDER BY irá falhar.
Isso porque o ORDER BY é uma cláusula capaz de reconhecer alias de campos e será uma das últimas cláusulas a serem processadas pelo SQL. No exemplo acima, quando o ORDER BY for processado, o campo já estará convertido para varchar, com isto, a ordenação não estará sendo realizada sobre o campo Data (hire_date), mas sim pelo
alias (hire_date/Data) que neste caso é uma string do tipo varchar. Podemos ver que a ordenação sobre o campo do tipo caracter será bem diferente da ordenação sobre um campo do tipo data.


SOLUÇÃO:


Para solucionar este problema, devemos informar ao SQL Server que a ordenação deve ser feita pelo campo do tipo Data. Para tanto, basta reescrevermos o exemplo anterior conforme o exemplo abaixo:


SELECT fname, CONVERT (varchar,hire_date,103) AS Data FROM pubs..employee
WHERE fname LIKE ‘P%’
ORDER BY hire_date


fname                Data     
——————– ———-
Patricia             01/08/1989
Philip               11/11/1989
Pedro                24/12/1990
Peter                17/05/1992
Paolo                27/08/1992
Palle                09/05/1993
Paul                 19/08/1993
Pirkko               29/11/1993
Paula                19/01/1994


Note que no exemplo acima o alias é diferente do nome do campo e na cláusula ORDER BY informamos aos SQL Server para ordernar não pelo alias mas sim pelo campo da tabela. Com isto, o SQL reconhece que deve ser feita a ordenação pela data e, enfim, conseguimos obter o resultado esperado.


Para saber mais sobre a cláusula ORDER BY, consulte o Books Online do SQL Server.


 

Avaliação:
Compartilhe:
  • Anterior Obtendo registros aleatórios de uma tabela18 anos atrás
  • Próximo Microsoft anuncia para amanhã o Service Pack 2 do Windows XP18 anos atrás

Deixe uma resposta Cancelar resposta

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

MVP Reconnect Award

Categorias

  • Artigos (359)
  • Dica da Semana (95)
  • Documentação (54)
  • Downloads (113)
  • MSDE 2000 (3)
  • Sem categoria (1)
  • Tutoriais (9)

Posts recentes

  • #FechouBrasil #PartiuPortugal
  • Brigando com o erro “The cached MSI file is missing”
  • MCDBABRASIL está de volta
  • Documentando o Servidor SQL Server
  • Brigando com os Erros 17182, 17826 e 17120

SQL Server AlwaysOn Video Series

Video1: Introdução ao SQLServer2012 AlwaysOn


Video2: Introdução ao SQLServer2012 AlwaysOn Availability Group


Video3: Introdução ao SQLServer2012 AlwaysOn AVG-Demo


Video4: Introdução ao SQLServer2012 AlwaysOn Listener


Video5: Introdução ao SQLServer2012 AlwaysOn Readable Secondaries


Video6: Introdução ao SQLServer2012 AlwaysOn Readable Secondaries-Demo


Video7: Introdução ao SQLServer2012 AlwaysOn Failover Clustering


Serie SQL Server Failover Clustering End-to-End

Parte 1: Configuração da Rede e Ambiente


Parte 2: Configurando o Windows 2008 R2 Domain Controler e DNS


Parte 3: Preparando os nós para o Failover Cluster


Parte 4: Configurando um Failover Cluster de 2 nós


Parte 5: Configurando as LUNs no iSCSI Software Target (Parte 1)


Parte 6: Configurando as LUNs no iSCSI Software Target (Parte 2)


Parte 7: Apresentando as LUNs para os nós do Failover Cluster


Parte 8: Configurando os discos no Failover Cluster


Parte 9: Instalando a primeira instância virtual do SQL Server 2008


Parte 10: Instalando a segunda instância virtual do SQL Server 2008


Parte 11: Instalando e Configurando o MSDTC no Failover Cluster


Parte 12: Configurando Mount Points no Cluster e SQL Server 2008


Vídeo Extra: Removendo uma Instância do SQL Server 2008 R2 em Cluster


Alta Disponibilidade no SQL Server 2008 R2: Failover Clustering Overview


Alta Disponibilidade no SQL Server 2008 R2: Failover Clustering na Prática

Menu

  • Home
  • Sobre
  • Contato

Mais

  • RSS Feeds
2022 MCDBA Brasil.