sql >> Database teknologi >  >> RDS >> Database

Sådan trækker du 30 dage fra en dato i T-SQL

Problem:

Du vil gerne have datoen 30 dage før en given dato i T-SQL.

Eksempel:

Vores database har en tabel med navnet Computer med data i kolonnerne Id , Name og PurchaseDate .

Id Navn Købsdato
1 Sony GX1000 2019-01-20
2 Samsung LX2000 2019-04-15
3 Dell K80 2019-08-30

Lad os få navnet på hver computer og datoen 30 dage før dens købsdato.

Løsning:

Vi vil bruge DATEADD()-funktionen til at trække et givet antal dage fra en dato.

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

Her er resultatet af forespørgslen:

Navn Før købsdato
Sony GX1000 2018-12-21
Samsung LX2000 2019-03-16
Dell K80 2019-07-31

Diskussion:

Hvis du gerne vil trække datoer eller klokkeslæt i SQL Server, skal du bruge DATEADD() fungere. Det kræver tre argumenter. Det første argument er dato/tidsenheden – i vores eksempel angiver vi dagen enhed.

Dernæst er datoen eller tidsenhedens værdi . I vores eksempel er dette -30 , fordi vi tager 30 dage fra den aktuelle dato. Husk at minus angiver at trække fra værdien; uden dette tegn tilføjer du til den givne dato.

Det sidste argument er den dato, vi opererer på; dette kunne være en dato/tid/datotid-kolonne eller ethvert udtryk, der returnerer en dato eller et klokkeslæt. I vores eksempel bruger vi PurchaseDate , en date kolonne.

Funktionen returnerer en ændret dato. I vores eksempel er forespørgslen til computeren med navnet 'Dell K80' returnerer en ny dato i BeforePurchaseDate kolonne. Den oprindelige dato '2019-08-30' ændres til datoen fra 30 dage tilbage:'2018-07-31' .

Du kan bruge DATEADD() funktion for alle dato- og tidsdatatyper.


  1. Hvad er en 'multi-part identifier', og hvorfor kan den ikke bindes?

  2. Sådan tilføjes xml-kodning <?xml version=1.0 encoding=UTF-8?> til xml-output i SQL Server

  3. VÆLG eller UDFØR i en PL/pgSQL-funktion

  4. Hvordan tilføjer jeg en tilpasset CHECK-begrænsning på en MySQL-tabel?