

 O Amazon Redshift não permitirá mais a criação de UDFs do Python a partir do Patch 198. As UDFs do Python existentes continuarão a funcionar normalmente até 30 de junho de 2026. Para ter mais informações, consulte a [publicação de blog ](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/). 

# Função DATEDIFF
<a name="r_DATEDIFF_function"></a>

DATEDIFF retorna a diferença entre as partes de data de duas expressões de data ou hora. 

## Sintaxe
<a name="r_DATEDIFF_function-synopsis"></a>

```
DATEDIFF( datepart, {date|time|timetz|timestamp}, {date|time|timetz|timestamp} )
```

## Argumentos
<a name="r_DATEDIFF_function-arguments"></a>

 *datepart*   
A parte específica do valor de data ou hora (ano, mês ou dia, hora, minuto, segundo, milissegundo ou microsegundo) sobre a qual a função atua. Para obter mais informações, consulte [Partes da data para funções de data ou de timestamp](r_Dateparts_for_datetime_functions.md).   
Especificamente, DATEDIFF determina o número de limites da parte da data que são cruzados entre duas expressões. Por exemplo, suponha que você esteja calculando a diferença em anos entre duas datas, `12-31-2008` e `01-01-2009`. Neste caso, a função retorna 1 ano, apesar do fato de que essas datas são apenas um dia de diferença. Se você estiver encontrando a diferença em horas entre dois timestamps, `01-01-2009 8:30:00` e `01-01-2009 10:00:00`, o resultado é 2 horas. Se você estiver encontrando a diferença em horas entre dois timestamps, `8:30:00` e `10:00:00`, o resultado é 2 horas.

*date*\$1*time*\$1*timetz*\$1*timestamp*  
Uma coluna ou expressões DATE, TIME, TIMETZ ou TIMESTAMP que implicitamente convertem em DATE, TIME, TIMETZ ou TIMESTAMP. As expressões devem conter a parte da data ou hora especificada. Se a segunda data ou hora for mais recente do que a primeira data ou hora, o resultado será positivo. Se a segunda data ou hora for mais antiga do que a primeira data ou hora, o resultado será negativo.

## Tipo de retorno
<a name="r_DATEDIFF_function-return-type"></a>

BIGINT

## Exemplos com uma coluna DATE
<a name="r_DATEDIFF_function-examples"></a>

O exemplo a seguir encontra a diferença, em número de semanas, entre dois valores de data literais. 

```
select datediff(week,'2009-01-01','2009-12-31') as numweeks;

numweeks
----------
52
(1 row)
```

O exemplo a seguir encontra a diferença, em horas, entre dois valores de data literais. Quando você não fornece o valor de hora para uma data, o padrão é 00:00:00.

```
select datediff(hour, '2023-01-01', '2023-01-03 05:04:03');
            
date_diff
----------
53
(1 row)
```

O exemplo a seguir encontra a diferença, em dias, entre dois valores literais de TIMESTAMETZ. 

```
Select datediff(days, 'Jun 1,2008  09:59:59 EST', 'Jul 4,2008  09:59:59 EST')
         
date_diff
----------
33
```

O exemplo a seguir encontra a diferença, em dias, entre duas datas na mesma linha de uma tabela.

```
select * from date_table;

start_date |   end_date
-----------+-----------
2009-01-01 | 2009-03-23
2023-01-04 | 2024-05-04
(2 rows)

select datediff(day, start_date, end_date) as duration from date_table;
         
duration
---------
      81
     486
(2 rows)
```

O exemplo a seguir encontra a diferença, em número de trimestres, entre um valor literal no passado e a data de hoje. Este exemplo presume que a data atual seja 5 de junho de 2008. Você pode nomear as partes da data por completo ou abreviá-las. O nome padrão da coluna para a função DATEDIFF é DATE\$1DIFF. 

```
select datediff(qtr, '1998-07-01', current_date);

date_diff
-----------
40
(1 row)
```

O exemplo a seguir une as tabelas SALES e LISTING para calcular quantos dias os ingressos foram vendidos para as listagens 1000 a 1005 depois de serem listados. A espera mais longa para vendas dessas ofertas foi de 15 dias e a espera mais curta foi de menos de um dia (0 dias). 

```
select priceperticket,
datediff(day, listtime, saletime) as wait
from sales, listing where sales.listid = listing.listid
and sales.listid between 1000 and 1005
order by wait desc, priceperticket desc;

priceperticket | wait
---------------+------
 96.00         |   15
 123.00        |   11
 131.00        |    9
 123.00        |    6
 129.00        |    4
 96.00         |    4
 96.00         |    0
(7 rows)
```

Este exemplo calcula o número médio de horas que os vendedores esperaram para todas as vendas de ingressos. 

```
select avg(datediff(hours, listtime, saletime)) as avgwait
from sales, listing
where sales.listid = listing.listid;

avgwait
---------
465
(1 row)
```

## Exemplos com uma coluna TIME
<a name="r_DATEDIFF_function-examples-time"></a>

O TIME\$1TEST da tabela a seguir tem uma coluna TIME\$1VAL (tipo TIME) com três valores inseridos.

```
select time_val from time_test;
            
time_val
---------------------
20:00:00
00:00:00.5550
00:58:00
```

O exemplo a seguir localiza a diferença no número de horas entre a coluna TIME\$1VAL e um literal de tempo.

```
select datediff(hour, time_val, time '15:24:45') from time_test;
         
 date_diff
-----------
        -5
        15
        15
```

O exemplo a seguir localiza a diferença no número de minutos entre dois valores de tempo literal.

```
select datediff(minute, time '20:00:00', time '21:00:00') as nummins;  
         
nummins 
---------- 
60
```

## Exemplos com uma coluna TIMETZ
<a name="r_DATEDIFF_function-examples-timetz"></a>

O TIMETZ\$1TEST da tabela de exemplo a seguir tem uma coluna TIMETZ\$1VAL (tipo TIMETZ) com três valores inseridos.

```
select timetz_val from timetz_test;
            
timetz_val
------------------
04:00:00+00
00:00:00.5550+00
05:58:00+00
```

O exemplo a seguir localiza as diferenças no número de horas, entre um literal TIMETZ e timetz\$1val. 

```
select datediff(hours, timetz '20:00:00 PST', timetz_val) as numhours from timetz_test;

numhours 
---------- 
0
-4
1
```

O exemplo a seguir localiza a diferença no número de horas, entre dois valores TIMETZ literal.

```
select datediff(hours, timetz '20:00:00 PST', timetz '00:58:00 EST') as numhours;
         
numhours 
---------- 
1
```