sql >> Databasteknik >  >> RDS >> PostgreSQL

Lägg till timmar till ett tidsvärde i PostgreSQL

I PostgreSQL kan vi använda + operatör för att lägga till en eller flera timmar till ett tidsvärde.

Med "tid"-värde kan detta vara en faktisk time värde, en timestamp , eller ett interval . Vi kan också lägga till timmar till ett date värde eller ett date och time kombination.

Exempel

Vi kan ange intervall när vi lägger till datum och tider. Till exempel kan vi använda hour eller hours för att lägga till en eller flera timmar:

SELECT time '08:35' + interval '1 hour';

Resultat:

09:35:00

Plural

Och i pluralform:

SELECT time '08:35' + interval '2 hours';

Resultat:

10:35:00

Tidsstämplar

Och här är den med en timestamp värde:

SELECT timestamp '2030-01-20 08:35' + interval '2 hours';

Resultat:

2030-01-20 10:35:00

Intervaller

Vi kan också lägga till timmar till ett interval :

SELECT interval '23 hours' + interval '2 hours';

Resultat:

25:00:00

Datum

Vi kan till och med lägga till timmar till ett date värde:

SELECT date '2030-01-20' + interval '3 hours';

Resultat:

2030-01-20 03:00:00

Resultatet är en timestamp värde.

Kombinerade datum- och tidsvärden

Vi kan också lägga till ett date och time värde tillsammans och lägg till timmar till det:

SELECT date '2030-01-20' + time '02:35' + interval '3 hours';

Resultat:

2030-01-20 05:35:00

Specificerat i minuter

Ett annat sätt att göra det är att ange motsvarande antal i minuter:

SELECT time '15:45' + interval '60 minutes';

Resultat:

16:45:00

När vi gör detta behöver vi inte vara exakt på timmen. Till exempel kan vi lägga till mer än en timme, men mindre än två:

SELECT time '15:45' + interval '90 minutes';

Resultat:

17:15:00

Negativa värden

Det är möjligt att utföra datumaritmetik med negativa värden. Om vi ​​använder ett negativt värde med + operatör, så kommer det angivna antalet timmar att subtraheras från inmatat datum/tid. Men om vi använder det med - operatör, så kommer den att läggas till inmatat datum/tid.

Exempel:

SELECT time '03:00' - interval '-2 hours';

Resultat:

05:00:00

  1. SQL välj max(datum) och motsvarande värde

  2. Varför kan jag inte utföra en aggregatfunktion på ett uttryck som innehåller ett aggregat men jag kan göra det genom att skapa en ny select-sats runt det?

  3. EF5:Kan inte bifoga filen '{0}' som databas '{1}'

  4. Hur kan jag förhindra att Postgres infogar en underfråga?