Posts Categorizados ‘CONVERT

15
jul
11

SQL Server 2012 “Denali” CTP3 – Novas funções: PARSE e TRY_CONVERT

Dentre as funções que foram lançadas com este novo CTP do SQL Server Denali, temos algumas que realmente facilitam e muito o dia-a-dia dos DBAs e desenvolvedores, sendo as principais: PARSE, TRY_PARSE e TRY_CONVERT.

Função TRY_CONVERT

A partir de agora, ao invés de receber mensagens de erro como “The conversion of a varchar data type to a datetime data type resulted in an out-of-range value” ou ter que desenvolver suas próprias funções de CONVERT para situações que podem gerar erros, temos o TRY_CONVERT. O TRY_CONVERT permite converter valores da mesma forma que a função CONVERT, com o diferencial de não gerar erro quando não é possível recuperar um valor, exemplo:

Função PARSE

Também foram inseridas neste CTP as funções de PARSE, que permitem conversão de textos para algum tipo escolhido, também com a possibilidade de informar qual a cultura a ser utilizada, exemplo “pt-BR” (Brasil) e “en-US” (Inglês USA), utilizando nativamente CLR:

Função TRY_PARSE

Também o método PARSE possui sua variação TRY_PARSE, que retorna NULL quando não for possível a conversão:

Próxima semana, também apresentarei novas funcionalidades que estão disponíveis neste CTP!

01
ago
09

Trabalhando com datas – dia/mes/ano

Durante todos os dias me deparo com muitas queries trabalhando com datas, principalmente em T-SQL, algumas bem complexas e outras simples, que muita gente ainda insiste em complicar. O MVP Gustavo Maia Aguiar trabalhou alguns tópicos neste sentido no seu blog, mas o meu objetivo é trabalhar do mais simples (formato da data) até passear um pouco em cálculos complexos com datas nos próximos tópicos.

Neste primeiro post demonstrarei como formatar campos e variáveis do tipo DATETIME para dia/mês/ano, utilizando a função Convert. O motivo de trabalhar isso é pelo fato de encontrar muitas vezes, algo assim:

Cabeçalho para demonstrações:

DECLARE @data DATETIME
SET @data = GETDATE()

Não faça isso:

SELECT CAST(DAY(@data), VARCHAR) + '/' + CAST(MONTH(@data), VARCHAR) + '/' + CAST(YEAR(@data), VARCHAR)

E até mesmo algumas coisas assim:

Também não faça isso:

SELECT
  (CASE WHEN DAY(@data) > 9
    THEN ''
    ELSE '0'
   END) +
CAST(DATE(@data) AS VARCHAR) +
  (CASE WHEN MONTH(@data) > 9
    THEN '/'
    ELSE '/0'
   END) +
CAST(MONTH(@data) AS VARCHAR) +
  '/' +
CAST(YEAR(@data) AS VARCHAR)

Se o objetivo era demonstrar o conhecimento em lógica, realmente os dois exemplos acima já me impressionam, pois não é qualquer um que chega a este raciocínio. Mas vamos para a versão que chamo de forma elegante:

SELECT CONVERT(VARCHAR, @data, 103)

Gostou da simplicidade, dê uma olhada no tópico de CAST e CONVERT da biblioteca do MSDN, que possui uma relação gigante de formatos possíveis.
http://msdn.microsoft.com/en-us/library/ms187928.aspx




Sobre o blog

Blog que há três anos trata de SQL Server, .NET Framework, PowerShell, soluções para problemas comuns e não tão comuns assim, informações sobre ferramentas diversas e o que vier na cabeça do MCT Paulo R. Pereira.

Twitter


Seguir

Obtenha todo post novo entregue na sua caixa de entrada.

Junte-se a 345 outros seguidores

%d bloggers like this: