sql convert date format

Eu sou um bocado paranóico em relação às conversões entre tipos de dados, provavelmente porque tive que conviver muito tempo com pessoas que faziam coisas fantásticas como gravar datas ou números em campos de texto.
No entanto há situações em que temos mesmo que fazer este tipo de conversões, normalmente para gerar outputs, e um dos casos mais comuns é converter uma data para uma string.
Esta operação aparentemente trivial levanta um conjunto de questões que têm essencialmente a ver com o formato que cada língua tem para a data, por exemplo quantos números considerar para o ano, dois ou quatro? qual o formato da data, dd-mm-aaaa, aaaa-mm-dd, mm-dd-aaaa? e qual o separador ‘/’, ‘-‘, ‘.’?
Felizmente o sql server já inclui o conjunto de conversões mais habitual que listo em baixo.
convert(varchar(50), getdate(), opcao)

  • opcao = 0 — Aug 27 2007 10:20AM
  • opcao = 1 — 08/27/07
  • opcao = 2 — 07.08.27
  • opcao = 3 — 27/08/07
  • opcao = 4 — 27.08.07
  • opcao = 5 — 27-08-07
  • opcao = 6 — 27 Aug 07
  • opcao = 7 — Aug 27, 07
  • opcao = 8 — 10:17:36
  • opcao = 9 — Aug 27 2007 10:18:11:090AM
  • opcao = 10 — 08-27-07
  • opcao = 11 — 07/08/27
  • opcao = 12 — 070827
  • opcao = 13 — 27 Aug 2007 10:22:46:000
  • opcao = 14 — 10:22:54:530
  • opcao = 100 — Aug 27 2007 10:20AM
  • opcao = 101 — 08/27/2007
  • opcao = 102 — 2007.08.27
  • opcao = 103 — 27/08/2007
  • opcao = 104 — 27.08.2007
  • opcao = 105 — 27-08-2007
  • opcao = 106 — 27 Aug 2007
  • opcao = 107 — Aug 27, 2007
  • opcao = 108 — 10:17:36
  • opcao = 109 — Aug 27 2007 10:18:11:090AM
  • opcao = 110 — 08-27-2007
  • opcao = 111 — 2007/08/27
  • opcao = 112 — 20070827
  • opcao = 113 — 27 Aug 2007 10:22:46:000
  • opcao = 114 — 10:22:54:530

Já agora se quisermos que os nomes dos meses e/ou dias da semana apareçam em português (e estivermos com a default language em inglês) teremos que primeiro incluir a instrução set language portuguese

por Vitor Silva



Leave a Reply