Hoje vamos conhecer as funções para tratamento de datas no SQL Server.
A função getdate(), retorna a data atual do servidor. A função não espera parâmetros e pode ser chamada com um select comum, assim:
SELECT GETDATE() as [Data atual]
Podemos também acrescentar dias a função, para atender alguma necessidade computacional asssim:
SELECT GETDATE() as [Data atual],
GETDATE()+10 as [Data atual com mais 10 dias],
GETDATE()-10 as [Data atual com menos 10 dias]
Mas utilizando o método acima, podemos apenas incrementar dias a data. E se quisermos adicionar dias, meses ou anos?
Podemos usar para este objetivo a função DATEADD. Esta função recebe três parâmetros:
Datepart, que é o definidor de qual parte da data será incrementada, Number que é o número que incrementara a parte da data definida no parâmetro anterior e por fim, a data que será incrementada. A função retorna um inteiro.
Observe os exemplos abaixo:
SELECT GETDATE() AS [Data atual],DATEADD(DAY,5,GETDATE()) AS [Data atual com cinco dias a mais]
,GETDATE() AS [Data atual],DATEADD(MONTH,5,GETDATE()) AS [Data atual com cinco meses a mais]
,GETDATE() AS [Data atual],DATEADD(YEAR,5,GETDATE()) AS [Data atual com cinco anos a mais]
--DATEADD para diminuir datas
SELECT GETDATE() AS [Data atual],DATEADD(DAY,-5,GETDATE()) AS [Data atual com menos cinco dias ]
,GETDATE() AS [Data atual],DATEADD(MONTH,-5,GETDATE()) AS [Data atual com menos cinco meses]
,GETDATE() AS [Data atual],DATEADD(YEAR,-5,GETDATE()) AS [Data atual com menos cinco anos]
E se precisarmos determinar a diferença em anos, meses ou dias entre duas datas? A função DATADIFF retorna esta informação. São três parâmetros, onde o primeiro é o definidor de qual parte das datas será comparada, e os dois últimos são as duas datas que serão comparadas. A função retorna um inteiro, e pode ser implementada assim:
--DATEDIFF
SELECT DATEDIFF(DAY,'2009-04-28 09:05:14.857','2009-05-03 09:05:14.857') AS [Diferença de dias entre duas datas]
,DATEDIFF(MONTH,'2009-04-28 09:05:14.857','2009-09-03 09:05:14.857') AS [Diferença de meses entre duas datas]
,DATEDIFF(YEAR,'2009-04-28 09:05:14.857','2014-05-03 09:05:14.857') AS [Diferença de anos entre duas datas]
Para obter o dia, mês ou ano de uma data, como um valor inteiro, podemos usar o DATAPART. São dois parâmetros, o definidor da unidade e a data que será analisada. Afunção retorna um inteiro, e pode ser implementada assim:
SELECT DATEPART(DAY,'2009-04-28 09:05:14.857') AS [Extraindo o dia da data]
,DATEPART(MONTH,'2009-04-28 09:05:14.857') AS [Extraindo o mês da data]
,DATEPART(YEAR,'2009-04-28 09:05:14.857') AS [Extraindo o ano da data]
Achou o DATEPART muito complicado? O SQL Server dá uma forcinha e disponibiliza para você as funções DAY, MONTH e YEAR. Estas funções esperam como parãmetro, apenas a data que precisa ser analisada, retorna um valor inteiro e pode ser implementada assim:
--DAY
SELECT DAY('2009-04-28 09:05:14.857') AS [Extraindo o dia da data]
,MONTH('2009-04-28 09:05:14.857') AS [Extraindo o mês da data]
,YEAR('2009-04-28 09:05:14.857') AS [Extraindo o ano da data]
terça-feira, 28 de abril de 2009
Funções de data do SQL Server
Assinar:
Postar comentários (Atom)
Nenhum comentário:
Postar um comentário
Leave your comment here!