Para calcular a diferença entre duas datas utilize a função DATEDIFF.
Sintaxe : DATEDIFF ( datepart , startdate , enddate )
A função retorna a contagem (inteiro com sinal) dos limites especificados de datepart cruzados entre os parâmetros especificados startdate e enddate.
Neste exemplo eu estou usando o banco de dados Northwind.mdf e calculando a diferença entre a data de hoje e data armazenada no campo ShippedDate da tabela Orders em dias.
Sintaxe:
DATEDIFF ( datepart , startdate , enddate )
A função DATEDIFF aceita três parâmetros:
- datepart - usado para identificar se você esta contando a diferença em termos de dias, horas, meses, etc;
- A data inicio;
- A data fim;
Note que a função retorna o número de limites datepart cruzados o que não é a mesma coisa que o tempo decorrido entre as duas datas.
A seguir temos dois exemplos de consultas onde cada coluna retorna a quantidade de um limite datepart cruzado para cada datepart especificado, embora a diferença entre as duas datas seja de 100 nano segundos (0,000001 segundos).
SELECT DATEDIFF(quarter, '2005-12-31 23:59:59.9999999', '2006-01-01 00:00:00.0000000');
SELECT DATEDIFF(month, '2005-12-31 23:59:59.9999999', '2006-01-01 00:00:00.0000000');
SELECT DATEDIFF(dayofyear, '2005-12-31 23:59:59.9999999', '2006-01-01 00:00:00.0000000');
SELECT DATEDIFF(day, '2005-12-31 23:59:59.9999999', '2006-01-01 00:00:00.0000000');
SELECT DATEDIFF(week, '2005-12-31 23:59:59.9999999', '2006-01-01 00:00:00.0000000');
SELECT DATEDIFF(hour, '2005-12-31 23:59:59.9999999', '2006-01-01 00:00:00.0000000');
SELECT DATEDIFF(minute, '2005-12-31 23:59:59.9999999', '2006-01-01 00:00:00.0000000');
SELECT DATEDIFF(second, '2005-12-31 23:59:59.9999999', '2006-01-01 00:00:00.0000000');
SELECT DATEDIFF(millisecond, '2005-12-31 23:59:59.9999999', '2006-01-01 00:00:00.0000000');
- Cada datepart e suas abreviações retornam o mesmo valor.
- Se o valor de retorno estiver fora do intervalo de int (-2,147,483,648 a +2,147,483,647), um erro será retornado.
- Para millisecond, a diferença máxima entre startdate e enddate é de 24 dias, 20 horas, 31 minutos e 23.647 segundos.
- Para second, a diferença máximo é de 68 anos.
- Se a startdate e enddate forem atribuídos apenas um valor de hora e o datepart não for um datepart de hora, será retornado 0.
- Se apenas um valor de hora for atribuído a uma variável de tipo de dados 'data', o valor da parte 'data' faltante será definido como o padrão: 1900-01-01
- Se o valor de retorno estiver fora do intervalo de int (-2,147,483,648 a +2,147,483,647), um erro será retornado.
- Para millisecond, a diferença máxima entre startdate e enddate é de 24 dias, 20 horas, 31 minutos e 23.647 segundos.
- Para second, a diferença máximo é de 68 anos.
- Se a startdate e enddate forem atribuídos apenas um valor de hora e o datepart não for um datepart de hora, será retornado 0.
- Se apenas um valor de hora for atribuído a uma variável de tipo de dados 'data', o valor da parte 'data' faltante será definido como o padrão: 1900-01-01
Nenhum comentário:
Postar um comentário