sql >> Databáze >  >> RDS >> Database

Jak odečíst 30 dní od data v T-SQL

Problém:

Chcete získat datum 30 dní před daným datem v T-SQL.

Příklad:

Naše databáze obsahuje tabulku s názvem Computer s údaji ve sloupcích Id , Name a PurchaseDate .

Id Jméno Datum nákupu
1 Sony GX1000 20. 1. 2019
2 Samsung LX2000 2019-04-15
3 Dell K80 2019-08-30

Pojďme získat název každého počítače a datum 30 dní před datum jeho nákupu.

Řešení:

K odečtení daného počtu dní od data použijeme funkci DATEADD().

	SELECT Name,
		  DATEADD(day, -30, PurchaseDate)
		    AS BeforePurchaseDate;
      FROM Computer;

Zde je výsledek dotazu:

Jméno BeforePurchaseDate
Sony GX1000 21. 12. 2018
Samsung LX2000 2019-03-16
Dell K80 2019-07-31

Diskuse:

Pokud byste chtěli odečíst data nebo časy na serveru SQL Server, použijte DATEADD() funkce. Chce to tři argumenty. Prvním argumentem je jednotka data/času – v našem příkladu zadáváme den jednotka.

Další je hodnota jednotky data nebo času . V našem příkladu je to -30 , protože od aktuálního data uplyne 30 dní. Pamatujte, že mínus značí odečítání hodnota; bez tohoto znaku přidáváte k danému datu.

Posledním argumentem je datum, kdy pracujeme; může to být sloupec datum/čas/datum a čas nebo jakýkoli výraz, který vrací datum nebo čas. V našem příkladu používáme PurchaseDate , date sloupec.

Funkce vrátí změněné datum. V našem příkladu jde o dotaz na počítač s názvem 'Dell K80' vrátí nové datum v BeforePurchaseDate sloupec. Původní datum '2019-08-30' se mění na datum před 30 dny:'2018-07-31' .

Můžete použít DATEADD() funkce pro všechny typy dat data a času.


  1. Výsledek převodu čísel na slova v MYSQL! Pomocí Query

  2. Chyba MySQL 1170 (42000):Sloupec BLOB/TEXT použitý ve specifikaci klíče bez délky klíče

  3. Automatizované testování procesu upgradu pro PXC/MariaDB Galera Cluster

  4. Operátoři sady Oracle