ORA-00933: SQL command not properly ended

Xching

Erfahrenes Mitglied
Hallo zusammen, ich habe eine Problem mit SQL Fehler "ORA-00933: SQL command not properly ended" und ich weiß es nicht, wo den Fehler lag.
SQL:
create table Time_inter(iid number(5) NOT NULL, time_from DATE NOT NULL, time_to DATE NOT NULL, CONSTRAINT Time_interval_pk PRIMARY KEY(iid),CONSTRAINT time_interval_u UNIQUE(time_from,time_to));
insert into Time_inter(iid, time_from, time_to) values(0, to_date('01.03.2011', 'DD.MM.YYYY'), to_date('01.04.2011', 'DD.MM.YYYY'));
insert into Time_inter(iid, time_from, time_to) values(1, to_date('01.05.2011', 'DD.MM.YYYY'), to_date('30.06.2011', 'DD.MM.YYYY'));
insert into Time_inter(iid, time_from, time_to) values(2, to_date('10.04.2011', 'DD.MM.YYYY'), to_date('02.05.2011', 'DD.MM.YYYY'));
insert into Time_inter(iid, time_from, time_to) values(3, to_date('03.05.2011', 'DD.MM.YYYY'), to_date('28.06.2011', 'DD.MM.YYYY'));
insert into Time_inter(iid, time_from, time_to) values(4, to_date('29.06.2011', 'DD.MM.YYYY'), to_date('15.07.2011', 'DD.MM.YYYY'));
insert into Time_inter(iid, time_from, time_to) values(5, to_date('01.03.2012', 'DD.MM.YYYY'), to_date('31.08.2014', 'DD.MM.YYYY'));
hier habe ich Problem mt SQL-Abfrage: ich wollte ein SQL abfrage machen, ob welche Zeile aus der Tabelle Time_interval fallen in den Zeitraum 1.5.11 bis 3.6.11 aber es klappt irgend wie nicht.
SQL:
select * from Time_inter where time_from between '01.05.2011' and time_to = '30.06.2011' ORDER BY iid ASC;
 
Zuletzt bearbeitet von einem Moderator:
sowas?

SQL:
SELECT 
  * 
FROM 
   Time_inter 
WHERE 
   time_from BETWEEN to_date('01.05.2011', 'DD.MM.YYYY') AND to_date('30.06.2011', 'DD.MM.YYYY')
ORDER BY 
   iid ASC;
 
Zuletzt bearbeitet von einem Moderator:
SQL:
time_from BETWEEN '01.05.2011' AND time_to = '30.06.2011'
Hier mischst du etwas gewaltig. Das AND ist noch Teil vom BETWEEN


Was du suchst ist eher sowas
SQL:
...
WHERE
       LEAST(to_date('30.06.2011', 'DD.MM.YYYY'), time_to) >= GREATEST(to_date('01.05.2011', 'DD.MM.YYYY'), time_from)

Siehe auch (ist zwar für MySQL geschrieben, ist aber in Oracle genau gleich): MySQL Perioden vergleichen
 
Zuletzt bearbeitet von einem Moderator:
Zurück