/* \i 'H:\\Linguaggi_1\\PostgreSQL\\Prove2_DominiVari.sql' */ /* INSERISCE VALORI APPARTENENTI AI VARI DOMINI NON NUMERICI. */ DROP DATABASE IF EXISTS prove2; /* Cancellazione della versione precedente del db */ CREATE DATABASE prove2; /* Creazione del db */ /* Connessione al db */ \c prove2 /* Creazione di tabella */ CREATE TABLE T ( NomeT2 VARCHAR(20) PRIMARY KEY, Inte INTEGER NOT NULL CHECK (Inte <> 10), Giornata DATE NOT NULL, Istante TIME NOT NULL, GioIsta TIMESTAMP NOT NULL, Durata INTERVAL DAY TO MINUTE NOT NULL, /* Gestisce l'intervallo composto da: giorni, mesi, minuti. */ Boo BOOLEAN NOT NULL ); INSERT INTO T VALUES ('A', 10, '2023-12-03', '22:23:24', '2011-11-11 12:13:14', '40 2:3', true); /* '40 2:3' indica: 40 giorni, 2 ore, 3 minuti. */ /* ERRORE: Il valore 10 non e` consentito all'attributo $Inte. */ INSERT INTO T VALUES ('A', 7, '2023-11-30', '23:33:43', '2021-11-11 12:13:14', '40 2:3', false); INSERT INTO T VALUES ('B', 7, '2023-12-01', '23:24:25', '2022-11-11 12:13:14', '50 2:3', false); INSERT INTO T VALUES ('C', 9, '2023-12-03', '22:23:24', '2023-11-11 12:13:15', '60 3:6', true); INSERT INTO T VALUES ('D', 9, '2023-12-03', '22:23:24', '2023-11-11 12:13:15', '60 3:6', true); INSERT INTO T VALUES ('E', 9, '2023-12-03', '22:23:24', '2023-11-11 12:13:15', '60 3:6', true); SELECT * FROM T; SELECT (MAX(Giornata) - MIN(Giornata)) AS DiffeGiorni, (MAX(Istante) - MIN(Istante)) AS DiffeIsta, (MAX(GioIsta) - MIN(GioIsta)) AS DiffeGioIsta, (MAX(Durata) - MIN(Durata)) AS DiffeDurata, (MAX(Giornata) + MIN(Durata)) AS FineGiornata FROM T; SELECT EXTRACT(MONTH FROM (MAX(Giornata))) AS Mese FROM T; /* Stampa diffegiorni | diffeista | diffegioista | diffedurata | finegiornata -------------+-----------+-------------------+------------------+--------------------- 3 | 01:10:19 | 730 days 00:00:01 | 20 days 01:03:00 | 2024-01-12 02:03:00 (1 riga) */