SQL Server 2012 . Novas funções . String e Date
Dando continuidade com as novas funções
Dando continuidade com as novas funções do SQL Server 2012, neste post veremos funções de String e Date.
1) STRING FUNCTIONS
1.1) CONCAT - Resulta a concatenação de vários argumentos
Criação do Ambiente de Teste:
Create table Funcoes
(
Codigo int identity primary key,
Nome varchar(50),
Sobrenome varchar(50)
)
INSERT INTO Funcoes VALUES('José','Antonio'), ('Maria','Silva'), ('Pedro','Souza'), ('Carlos',NULL), ('João',NULL)
GO
Antes utilizávamos o operador "+" para concatenar, ficava desta forma:
Select 'Nome Completo: ' + Nome + ' ' + Sobrenome + '- Data: ' + convert(varchar,GETDATE()) as Coluna from Funcoes

Porém, ao concatenar com NULL ele retorna NULL.
Para corrigir isto, vamos utilizar o comando CONCAT_NULL_YIELDS_NULL.
SET CONCAT_NULL_YIELDS_NULL OFF -- Para concatenar com nulo
Select 'Nome Completo: ' + Nome + ' ' + Sobrenome + '- Data: ' + convert(varchar,GETDATE()) as Coluna from Funcoes
Agora podemos o utilizar a função CONCAT, além de ficar mais limpo, não foi preciso conversão e nem configurar o CONCAT_NULL_YIELDS_NULL.
Select CONCAT('Nome Completo: ', Nome, ' ', Sobrenome, '- Data: ', GETDATE()) Coluna from Funcoes

1.2) FORMAT - Mais uma alternativa para o Convert e o Cast. Utiliza a cultura do .Net Framework.
Neste exemplo formateremos com o parâmetro "d"(Data) e o "c"(Moeda)
Declare @Hoje date = getdate()
Select Format(@Hoje, 'd', 'en-us')
Select Format(@Hoje, 'd', 'pt-br')
Declare @Valor money = 100
Select Format(@Valor, 'c', 'en-us')
Select Format(@Valor, 'c', 'pt-br')
Select Format(@Valor, 'c', 'fr-fr')

2) DATE AND TIME FUNCTIONS
2.1) DATEFROMPARTS - Monta uma data. Parâmetros: (YEAR, MONTH, DAY)
SELECT DATEFROMPARTS(2012,4,11) as DATEFROMPARTS
2.2) TIMEFROMPARTS - Monta uma hora completa. Parâmetros: (HOUR, MINUTE, SECONDS, FRACTIONS, PRECISION)
O Parâmetro FRACTIONS depende de PRECISION. A quantidade de dÃgitos do FRACTIONS deve ser igual ao valor de PRECISION.
SELECT TIMEFROMPARTS(18, 16, 32, 300, 3) as TIMEFROMPARTS
2.3) DATETIMEFROMPARTS - Monta uma data/hora completa. Parâmetros: (YEAR, MONTH, DAY, HOUR, MINUTE, SECONDS, MILLISECONDS)
SELECT DATETIMEFROMPARTS(2011,3,25,21,5,32,122) as DATETIMEFROMPARTS
2.4) SMALLDATETIMEFROMPARTS - Monta uma data/hora. Parâmetros: (YEAR, MONTH, DAY, HOUR, MINUTE)
SELECT SMALLDATETIMEFROMPARTS(2012,6,4,14,35) as SMALLDATETIMEFROMPARTS
2.5) DATETIME2FROMPARTS - Monta uma data/hora completa Parâmetros: (YEAR, MONTH, DAY, HOUR, MINUTE, SECONDS, FRACTIONS, PRECISION)
SELECT DATETIME2FROMPARTS(2012,4,11,18, 16, 32, 300, 3) as DATETIME2FROMPARTS
2.6) DATETIMEOFFSETFROMPARTS - Monta uma data/hora completa com Fuso Horário. Parâmetros: (YEAR, MONTH, DAY, HOUR, MINUTE, SECONDS, FRACTIONS, HOUR_OFFSET, MINUTE_OFFSET, PRECISION)
SELECT DATETIMEOFFSETFROMPARTS(2012,4,11,18, 16, 32, 300, 3,30,3) as DATETIMEOFFSETFROMPARTS
2.7) EOMONTH - Retorna o último dia de um mês. Parâmetros: (START_DATE, [, MONTH_TO_ADD ])
SELECT EOMONTH (Getdate()) AS EsteMes, EOMONTH (Getdate(), 1) AS ProximoMes, EOMONTH (Getdate(), -1) AS MesAnterior

Subscribe ecode10.com
Receive our latest updates about programming languages, software, database, books, ebooks, classes, jobs and more.
You can cancel anytime.
Log In
Related articles
SELECT Format Date Time for many countries
It is a good tip to use day by day
Creating a SiteMap using SQL Database
Como indexar melhor meu site e links?
Transformando linhas em colunas usando SQL Server
veja como funciona