

 Amazon Redshift unterstützt UDFs ab Patch 198 nicht mehr die Erstellung von neuem Python. Das bestehende Python UDFs wird bis zum 30. Juni 2026 weiterhin funktionieren. Weitere Informationen finden Sie im [Blog-Posting](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/). 

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Funktion DATEDIFF
<a name="r_DATEDIFF_function"></a>

DATEDIFF gibt die Differenz zwischen den Datumsteilen zweier Datums- oder Uhrzeitausdrücke aus. 

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

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

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

 *datepart*   
Der spezifische Teil des Datums- oder Zeitwerts (Jahr, Monat oder Tag, Stunde, Minute, Sekunde, Millisekunde oder Mikrosekunde) auf den die Funktion angewendet wird. Weitere Informationen finden Sie unter [Datumsteile für Datums- oder Zeitstempelfunktionen](r_Dateparts_for_datetime_functions.md).   
Insbesondere bestimmt DATEDIFF die Anzahl von Datumsteilgrenzen, die zwischen zwei Ausdrücken überschritten werden. Nehmen wir an, dass Sie den Jahresdifferenz zwischen zwei Daten berechnen möchten, `12-31-2008` und `01-01-2009`. In diesem Fall gibt die Funktion 1 Jahr zurück, obwohl die Daten nur einen Tag auseinanderliegen. Wenn Sie die Differenz in Stunden zwischen zwei Zeitstempeln, `01-01-2009 8:30:00` und `01-01-2009 10:00:00` ermitteln, ist das Ergebnis 2 Stunden. Wenn Sie die Differenz in Stunden zwischen zwei Zeitstempeln, `8:30:00` und `10:00:00` ermitteln, ist das Ergebnis 2 Stunden.

*date*\$1*time*\$1*timetz*\$1*timestamp*  
Eine DATE-, TIME-, TIMETZ- oder TIMESTAMP-Spalte bzw. ein entsprechender Ausdruck, die/der implizit zu einem DATE, TIME, TIMETZ oder TIMESTAMP konvertiert wird. Beide Ausdrücke müssen den angegebenen Datums- oder Zeitteil enthalten. Wenn das zweite Datum bzw. die zweite Uhrzeit größer als das/die erste ist, ist das Ergebnis positiv. Wenn das zweite Datum bzw. die zweite Uhrzeit vor dem/der ersten liegt, ist das Ergebnis negativ.

## Rückgabetyp
<a name="r_DATEDIFF_function-return-type"></a>

BIGINT

## Beispiele mit einer DATE-Spalte
<a name="r_DATEDIFF_function-examples"></a>

Im folgenden Beispiel wird die Differenz als Anzahl von Wochen zwischen zwei Literal-Datumswerten berechnet. 

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

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

Im folgenden Beispiel wird die Differenz in Stunden zwischen zwei Literal-Datumswerten ermittelt. Wenn Sie den Zeitwert für ein Datum nicht angeben, wird standardmäßig 00:00:00 verwendet.

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

Im folgenden Beispiel wird die Differenz in Tagen zwischen zwei TIMESTAMETZ-Literalwerten ermittelt. 

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

Im folgenden Beispiel wird die Differenz in Tagen zwischen zwei Daten in derselben Zeile einer Tabelle ermittelt.

```
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)
```

Im folgenden Beispiel wird die Differenz als Anzahl von Quartalen zwischen einem in der Vergangenheit liegenden Literalwert und dem heutigen Datum berechnet. Bei diesem Beispiel wird davon ausgegangen, dass das aktuelle Datum der 5. Juni 2008 ist. Sie können Datumsteile ausschreiben oder abkürzen. Der Standard-Spaltenname für die DATEDIFF-Funktion ist DATE\$1DIFF. 

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

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

Das folgende Beispiel verbindet die Tabellen SALES und LISTING zur Berechnung, wie viel Tage nach ihrer Auflistung Tickets für die Auflistungen 1000 bis 1005 verkauft wurden. Die längste Wartezeit für den Verkauf dieser Auflistungen betrug 15 Tage, und die kürzeste lag unter einem Tag (0 Tage). 

```
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)
```

Dieses Beispiel berechnet die durchschnittliche Zahl von Stunden, für die Verkäufer auf alle Ticketverkäufe warteten. 

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

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

## Beispiele mit einer TIME-Spalte
<a name="r_DATEDIFF_function-examples-time"></a>

Die folgende Beispieltabelle TIME\$1TEST enthält eine Spalte TIME\$1VAL (Typ TIME) mit drei eingefügten Werten.

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

Im folgenden Beispiel wird die Differenz als Anzahl von Stunden zwischen der TIME\$1VAL-Spalte und einem Zeitliteral berechnet.

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

Im folgenden Beispiel wird die Differenz als Anzahl von Minuten zwischen zwei Literal-Zeitwerten berechnet.

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

## Beispiele mit einer TIMETZ-Spalte
<a name="r_DATEDIFF_function-examples-timetz"></a>

Die folgende Beispieltabelle TIMETZ\$1TEST enthält eine Spalte TIMETZ\$1VAL (Typ TIMETZ) mit drei eingefügten Werten.

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

Im folgenden Beispiel werden die Differenzen als Anzahl von Stunden zwischen dem TIMETZ-Literal und timetz\$1val berechnet. 

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

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

Im folgenden Beispiel wird die Differenz als Anzahl von Stunden zwischen zwei Literal-TIMETZ-Werten berechnet.

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