Caro amigo leitor, a linguagem Transact-SQL tem varias funções que considero muito úteis no dia a dia de quem usa o banco de dados SQL Server da Microsoft. Neste artigo vou mostrar algumas dessas funções que considero mais úteis. Mostrarei exemplos de cada uma delas. Você pode verificar a sintaxe destas e de muitas outras funções consultando o Books Online do SQL Server.

 

1) Função DATEDIFF: Esta função é utilizada para calcular a diferença entre duas datas, seja esta diferença em segundos, minutos, horas, dias ou anos. Observe abaixo a execução da função e os resultados obtidos;

 

DECLARE @DataAtual DATETIME

SET @DataAtual = GETDATE()

 

SELECT DATEDIFF(SECOND,'01/01/2006 07:00',@DataAtual) /* Retorna a quantidade de segundos desde 01/01/2006 as 07:00 até o momento */

 

SELECT DATEDIFF(MINUTE,'01/01/2006 07:00',@DataAtual) /* Retorna a quantidade de minutos desde 01/01/2006 as 07:00 até o momento */

 

SELECT DATEDIFF(HOUR,'01/01/2006 07:00',@DataAtual) /* Retorna a quantidade de horas desde 01/01/2006 as 07:00 até o momento */

 

SELECT DATEDIFF(DAY,'01/01/2006 07:00',@DataAtual) /* Retorna a quantidade de dias desde 01/01/2006 as 07:00 até o momento */

 

SELECT DATEDIFF(MONTH,'01/01/2006 07:00',@DataAtual) /* Retorna a quantidade de meses desde 01/01/2006 as 07:00 até o momento */

 

SELECT DATEDIFF(YEAR,'01/01/2006 07:00',@DataAtual) /* Retorna a quantidade de anos desde 01/01/2006 as 07:00 até o momento */

  

2) Funções CAST e  CONVERT: Funções utilizadas para conversão de dados, veja  abaixo a execução da função para conversão de alguns dados;

 

DECLARE @DataAtual DATETIME

SET @DataAtual = GETDATE()

/* Conversão de date em varchar */

SELECT 'A data de hoje é: ' + CAST(@DataAtual AS VARCHAR(11))

SELECT 'A data de hoje é: ' + CONVERT(VARCHAR(11),@DataAtual)

 

/* conversão de numeric em varchar */

SELECT 'O valor é: ' + CONVERT(VARCHAR(10),2456.67)

SELECT 'O valor é: ' + CAST(2456.67 AS VARCHAR(7))

 

3) Funções ISDATE e ISNUMERIC: Estas funções são utilizadas para verificar se determinada seqüência de caracteres é uma data valida (ISDATE) ou um dados numérico (ISNUMERIC), estas funções retornam 1 caso o parâmetro seja uma data valida ou um valor numérico ou 0 caso contrario. Veja abaixo os exemplos das duas funções;

 

SELECT ISDATE('01/34/2006') /* Retorna 0 - não é uma data valida */

SELECT ISDATE('04/07/2006') /* Retorna 1 - data valida */

 

SELECT ISNUMERIC(1235.785) /* Retorna 1 - é um dado numerico */

SELECT ISNUMERIC('1235.785') /* Retorna 1 pois apesar de se uma string é um dado numerico valido */

SELECT ISNUMERIC('12A') /* Retorna 0 - não é um valor numerico valido */

 

4) Função ISNULL: Esta função retorna um valor padrão caso o parâmetro recebido seja nulo. Veja o exemplo abaixo;

 

DECLARE @V INT /* V é NULL */

SELECT ISNULL(@V,0.00) /* O retorno da função será zero ao invés de NULL */

SET @V = 200

SELECT ISNULL(@V,0.00) /* O retorno da função agora será o valor da variável pois @V não é mais NULL */

 

5) Função LEFT: Retorna N caracteres a esquerda de uma seqüência. Veja o exemplo abaixo;

 

SELECT LEFT(‘Este é um teste’,3) /* Retorna Est */

 

6) Função RIGHT: Retorna N caracteres a direita de uma seqüência. Veja o exemplo abaixo;

 

SELECT LEFT(‘Este é um teste’,3) /* Retorna ste */

 

7) Função RTRIM: Esta função remove os espaços em branco à direita de uma string;

 

DECLARE @String VARCHAR(50)

SET @String = '     Esta é um string de teste   '

SELECT RTRIM(@String)

 

8) Função LTRIM: Esta função remove os espaços em branco à esquerda de uma string;

 

DECLARE @String VARCHAR(50)

SET @String = '     Esta é um string de teste   '

SELECT LTRIM(@String)

 

9) Função ROUND: Esta função é utilizada para arredondamento de dados numérico, no exemplo abaixo podemos ver a varias opções para utilização desta função;

 

DECLARE @Valor NUMERIC(9,3)

SET @Valor = 4638.896

SELECT ROUND(@Valor,2) /* Retorna 4638.900 */

SELECT ROUND(@Valor,1) /* Retorna 4638.900 */

SELECT ROUND(@Valor,0) /* Retorna 4639.000 */

SELECT ROUND(@Valor,-1) /* Retorna 4640.000 */

SELECT ROUND(@Valor,-2) /* Retorna 4600.000 */

 

 

10)  Função DATEADD: Esta função é utilizada para somar datas, podemos somar uma determinada data com segundos, minutos horas,dias ou anos;

 

/* O primeiro parametro é a unidade que vamos somar a data: segundo, minuto, etc...

   O segundo parametro é a quantidade a ser somada

   O terceiro parametro é a data que recebera o incremento */

SELECT DATEADD(SECOND,1,GETDATE()) /* Soma 1 segundo à hora atual */

SELECT DATEADD(MINUTE,1,GETDATE()) /* Soma 1 minuto à hora atual */

SELECT DATEADD(HOUR,1,GETDATE()) /* Soma 1 hora à hora atual */

SELECT DATEADD(DAY,1,GETDATE()) /* Soma 1 dia à hora atual */

SELECT DATEADD(MONTH,1,GETDATE()) /* Soma 1 mes à hora atual */

 

Conclusão

 

Neste artigo foram apresentadas algumas das principais funções da linguagem Transact-SQL, estas funções são muito úteis aos desenvolvedores, espero que seja útil à todos. Sempre que puderem acessem o Books Online do SQL Server, é uma fonte de muita informação, principalmente sobre Transact-SQL. Até a próxima.