Výpočty s daty

Intermediate SQL Server

Ginger Grant

Instructor

DATEPART

DATEPART určuje, kterou část data chcete vypočítat. Nejčastější zkratky:

  • DD pro den
  • MM pro měsíc
  • YY pro rok
  • HH pro hodinu
Intermediate SQL Server

Běžné datové funkce v T-SQL

  • DATEADD(): Přičtení nebo odečtení hodnot datetime
    • Vždy vrátí datum
  • DATEDIFF(): Rozdíl mezi dvěma hodnotami datetime
    • Vždy vrátí číslo
Intermediate SQL Server

DATEADD

Pro přičtení nebo odečtení hodnoty a získání nového data použijte DATEADD()

DATEADD (DATEPART, number, date) 
  • DATEPART: Jednotka měření (DD, MM atd.)
  • number: Celé číslo, které se přičte
  • date: Hodnota datetime
Intermediate SQL Server

Výpočty s daty pomocí DATEADD (I)

Jaké datum nastane 30 dní po 21. června 2020?

SELECT DATEADD(DD, 30, '2020-06-21')
+-----------------------------+ 
|(No Column Name)             | 
|-----------------------------+ 
|2020-07-21 00:00             | 
+-----------------------------+
Intermediate SQL Server

Výpočty s daty pomocí DATEADD (II)

Jaké datum nastane 30 dní před 21. červnem 2020?

SELECT DATEADD(DD, -30, '2020-06-21')
+-----------------------------+ 
|(No Column Name)             | 
|-----------------------------+ 
|2020-05-22 00:00             | 
+-----------------------------+
Intermediate SQL Server

DATEDIFF

Vrátí datum po přičtení nebo odečtení čísla od data

DATEDIFF (datepart, startdate, enddate) 
  • datepart: Jednotka měření (DD, MM atd.)
  • startdate: Počáteční hodnota data
  • enddate: Koncová hodnota datetime
Intermediate SQL Server

Výpočty s daty pomocí DATEDIFF

SELECT DATEDIFF(DD, '2020-05-22', '2020-06-21') AS Difference1,
       DATEDIFF(DD, '2020-07-21', '2020-06-21') AS Difference2
+--------------------+--------------------+ 
|Difference1         |Difference2         |
+--------------------+--------------------+
|30                  |-30                 |
+--------------------+--------------------+
Intermediate SQL Server

Pojďme procvičovat!

Intermediate SQL Server

Preparing Video For Download...