SELECT

Status
Nicht offen für weitere Antworten.

PollerJava

Top Contributor
Hallo,

ich arbeiote mit der DB FireBird und möchte eine wirtzige Abfrage machen,
Und zwar habe ich in meiner DB 2 Spalten (TIMESTAMP, FLOAT),
aus dieser Tabelle möchte ich jetzt eine Abfrage starten, mit der ich alle Tupel raushole, die laut Zeitstempel eine Stunde oder länger auseinander liegen,

z.B.: starte ich die Abfrage bei 2007-07-07 12:11:20
der nächste Eintrag sollte dann 2007-07-07 13:11:20 oder größer sein,
ist das irgendwie mit einem SELECT- Statement möglich,

Vielen Dank für Eure Antworten,

lg
 
T

tuxedo

Gast
Hmm, glaub nicht dass das direkt geht. Schließlich müsste man ja jeden eintrag mit jedem vergleichen um die Differenz heraus zu finden.

Lasse mich aber gerne eines besseren belehren.

- Alex
 

HoaX

Top Contributor
man muss nur einen join der tabelle auf sich selbst machen, wobei ein eintrag mit dem zeitlich nächsten gejoint wird. dann kann man die differenz der beiden berechnen lassen und entsprechend aussortieren.
 
S

SlaterB

Gast
interessant, dann hast du von
12:11:20
12:15:20
13:11:20
13:15:20

gejoint

12:11:20 13:11:20
12:15:20 13:15:20

aber noch keine komplette Reihe,
mehrmals joinen, aber geht auch tausende male? und kenn man die Anzahl vorher?
 

lolkind

Mitglied
Guten Morgen!

Also, ich hab mir mal eine Tabelle erstellt (test) mit Namen/Vornamen/BDay um dies auszuprobieren.

Meine Abfrage sieht jetzt so aus:


Code:
SELECT name, vorname, bday
FROM tab_test
WHERE bday>#11/11/2000#
ORDER BY bday;

1. SELECT = Tabellenspalte, die ausgegeben werdenn soll
2. FROM = Von welcher Tabelle/n sind die Spalten
3. WHERE = Was muss bei den ausgegebenen Datensätzen zutreffen
4. ORDER BY = Wie sollen die gefundenen Datensätze sortiert werden

Weitere Hinweise:

Wenn man hinter dem "ORDER BY", nach der Sortierungsspalte ein "DECT" schreibt, so erhält man die umgekehrte Reihenfolge.


MFG
das lolkind
 

PollerJava

Top Contributor
Also die Tabelle liegt sortiert nach dem TIMESTAMP vor:

Code:
2007-07-07 12:11:20   12
2007-07-07 12:11:24   14
2007-07-07 12:11:26   11
2007-07-07 12:11:32   54
2007-07-07 12:11:50   11
2007-07-07 12:11:57    9
...

Die Anzahl der in der Tabelle enthaltenen Tupel ist mir nicht bekannt,
 

lolkind

Mitglied
???:L Hast du eine Frage vergessen?

Falls ich das richtig verstehe(die nicht vorhandene Frage ^^):

Ich =
WHERE bday>#11/11/2000#
ORDER BY bday;

Du =
WHERE TIMESTAMP>#2007-07-07 12:11:24#
ORDER BY TIMESTAMP;


Wobei du bei einer Java-SQL-Abfrage die Zeit "2007-07-07 12:11:24" durch eine Variable ersetzen kannst.
Geht natürlich auch im VB-Quellcode!

Aber bitte formuliere dein Problem, damit ich dir besser helfen kann.

MFG
das lolkind
 

PollerJava

Top Contributor
lolkind hat gesagt.:
Du =
WHERE TIMESTAMP>#2007-07-07 12:11:24#
ORDER BY TIMESTAMP;


Wobei du bei einer Java-SQL-Abfrage die Zeit "2007-07-07 12:11:24" durch eine Variable ersetzen kannst.
Geht natürlich auch im VB-Quellcode!


OK, so viel wie ich jetzt verstanden habe, sind dann alle TIMESTAMPS, die ich mit der Abfrage oben raushole, größer als 2007-07-07 12:11:24, aber ich würde ja nur die Tupel benötigen, welche größer 2007-07-07 12:11:24 sind UND eine Stunde auseinander liegen,

Ich müsste praktisch den ersten Eintrag herausholen, der größer #2007-07-07 12:11:24# ist, dann eine Stunde dazuzählen, den nächsten Eintrag herausholen, wieder eine Stunde dazu, den nächsten usw.

Oder hab ich bei der Abfrage oben etwas übersehen??

lg und vielen Dank,
 

FenchelT

Bekanntes Mitglied
PollerJava hat gesagt.:
Hallo,

ich arbeiote mit der DB FireBird und möchte eine wirtzige Abfrage machen,
Und zwar habe ich in meiner DB 2 Spalten (TIMESTAMP, FLOAT),
aus dieser Tabelle möchte ich jetzt eine Abfrage starten, mit der ich alle Tupel raushole, die laut Zeitstempel eine Stunde oder länger auseinander liegen,

z.B.: starte ich die Abfrage bei 2007-07-07 12:11:20
der nächste Eintrag sollte dann 2007-07-07 13:11:20 oder größer sein,
ist das irgendwie mit einem SELECT- Statement möglich,

Vielen Dank für Eure Antworten,

lg

Moin,

wenn ich Dirch richtig verstanden habe moechtest Du sowas:

Gegeben:
MSSQL Server tabelle = test felder = id (int) und datum(smalldatetime) aktuelle Systemzeit = 06.12.2007 08:40:06

Code:
id    |    datum
1    |    15.10.2007 16:31:00
2    |    06.12.2007 10:00:00
3    |    06.12.2007 10:16:00
4    |    07.12.2007 08:01:00
5    |    06.12.2007 08:30:00
6    |    06.12.2007 08:46:00


Nun kannst Du die Systemzeit im SQL abfragen und mit ausgeben, genauso kannst Du die Differenzzeit zwischen Systemzeit und Datumszeit ausrechnen lassen mittels

Code:
SELECT id, datum, getdate() as sysdate, datediff(hh, getdate(), datum) as diff  //das hh bedeutet differenz in Stunden
FROM test

Du erhaeltst dann als Ergebnis:

Code:
id    |    datum                       |      sysdate            |      diff
1    |    15.10.2007 16:31:00   |      06.12.2007 08:40:06       |      -1240
2    |    06.12.2007 10:00:00   |      06.12.2007 08:40:06       |       2
3    |    06.12.2007 10:16:00   |      06.12.2007 08:40:06       |       2
4    |    07.12.2007 08:01:00   |      06.12.2007 08:40:06       |       2
5    |    06.12.2007 08:30:00   |      06.12.2007 08:40:06       |       0
6    |    06.12.2007 08:46:00   |      06.12.2007 08:40:06       |       0


Nun kannst Du Deinen SQL erweitern um eine WHERE Bedingung

Code:
SELECT id, datum, getdate() as sysdate, datediff(hh, getdate(), datum) as diff  //das hh bedeutet differenz in Stunden
FROM test
WHERE datediff(hh, getdate(), datum) > 1 OR datediff(hh, getdate(), datum) < -1


Dann erhaeltst Du als Ausgabe nur noch die Datensaetze mit der ID 1 bis 4


Sollte es das sein was Du moechtest, musst Du Dich mit den Datumsfunktionen Deines RDBMS beschaeftigen.
Falls Du was anderes moechtest, habe ich Dich falsch verstanden
:wink:
 

lolkind

Mitglied
Ich meinte nur, dass du dir die gewünschte Zeit, ab der die Datensätze angezeigt werden sollen, einsetzt.
Alle Zeiten die danach kommen werden ja angezeigt, wie du eigentlich wolltest.

Ich hab keine Ahnung wie du auf die "+1Stunde" kommst, oder musst du das so machen?
Wenn ja, dann wäre die Antwort von FenchelT deine Lösung.

MFG
das lolkind
 

PollerJava

Top Contributor
Ja genau, das kommt schon hin,

sysdate kann aber nur größer sein als der letzte Eintrag, oder, ich starte ja eine Abfrage zu der zeit sysdate, und da gibt es ja keine größeren Werte als sysdate.

Ein weiteres Problem ist noch, dass ich einstellen kann, ab wann die Abfrage beginnen kann,
 

FenchelT

Bekanntes Mitglied
Hallo,

das mit dem Systedate war doch nur ein Beispiel, weil cih davon ausgegangen bin, dass Du kein eigenes Datum vorliegen hast :wink:

die Funktion datediff berechnet die Differenz in tagen, monaten, jahren, stunden, usw. von zwei DAten.
Ob das eine nun sysdate ist oder eins was Du in JAva in einer Variablen vorliegen hast und in den SQL einsetzt
spielt keine Rolle
 

PollerJava

Top Contributor
Hätte noch ne frage und zwar wenn ich die erste Abfrage mache, dann hole ich mir ja wieder alle Daten in die JVM oder

Code:
SELECT id, datum, getdate() as sysdate, datediff(hh, getdate(), datum) as diff  //das hh bedeutet differenz in Stunden
FROM test

oder bleibt diese Tabelle als virtuelle Tabelle in der Datenbank?

lg
 

FenchelT

Bekanntes Mitglied
Oh man :roll:
Nix fuer ungut, ich dachte nur, wenn ich Dir das ausfuehrlich, Schritt fuer Schritt erklaere, dann ist es besser zu verstehen.
Ich glaube, ich habe das Gegenteil bewirkt.

Natuerlich holt Dir ein SQL ohne WHERE BEdingung alle Datensaetze, deshalb musst DU ja auch die WHERE Bedingung benutzen :wink:


Ich wollte Dir doch nur zeigen, wie sich was Schritt fuer Schritt in der Ausgabe veranedert.


Gruesse
 

PollerJava

Top Contributor
OK, jetzt ist es hoff. angekommen, Ist eh super erklärt!!!! :idea:

Jetzt muss ich nur noch herausfinden, wie getdate() bei Firebird heißt.
 

FenchelT

Bekanntes Mitglied
PollerJava hat gesagt.:
OK, jetzt ist es hoff. angekommen, Ist eh super erklärt!!!! :idea:

Jetzt muss ich nur noch herausfinden, wie getdate() bei Firebird heißt.

Genau und wie die Funktion datediff bei Firebird heisst.
getdate() ist in manchen Datenbanken sysdate() oder date()

Gruesse
 

PollerJava

Top Contributor
Weiß das vielleicht wer, wie DATEDIFF in FireBird heißt,
da ist nicht viel zu finden, timestampdiff ist es auf jeden fall nicht, das habe ich schon versucht,
 

PollerJava

Top Contributor
Vielen vielen dank,

Also ich kann jetzt die differenz ausrechnen ( end_time - start_time ) aber dann passt die Abfrage nicht mehr oder?
Code:
SELECT id, datum, getdate() as sysdate, datediff(hh, getdate(), datum) as diff  //das hh bedeutet differenz in Stunden
FROM test
WHERE datediff(hh, getdate(), datum) > 1 OR datediff(hh, getdate(), datum) < -1
 

PollerJava

Top Contributor
Hallo nochmal,

ich habs jetzt so versucht:

Code:
SELECT (current_date - zeitstempel) FROM myTable WHERE (current_date - zeitstempel) < -1

und bekomme leider eine Fehlermeldung:

STATEMENT FAILED, SQLCODE = -833, EXPRESSION EVALUATION NOT SUPPORTED

Was mache ich da falsch,

Danke für Eure Hilfe

lg Bin gerade draufgekommen, dass diese Möglichkeit auch nicht geht, da ich ja nur immer pro
Stunde einen Eintrag benötige, nicht aber alle die größer als z.B.: eine Stunde sind
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
I Hibernate / JPA - Spaltenname von Query (Select) bekommen Datenbankprogrammierung 6
OnDemand Select * from bringt keine Rückgabe Datenbankprogrammierung 49
OnDemand Select vs Update ins blaue, was ist teurer? Datenbankprogrammierung 11
M JPA: select all mit unterschiedlichem Tablename Datenbankprogrammierung 2
A MySQL Select und Insert in Java Datenbankprogrammierung 15
J JPA: Wie sieht der select aus? Datenbankprogrammierung 2
D geänderte SELECT Abfragen Datenbankprogrammierung 15
N SQLite Hibernate und Aufruf von Funktion SELECT last_insert_rowid() Datenbankprogrammierung 2
T sqlite select Datenbankprogrammierung 12
D Oracle NullPointerException bei select mit Null Values Datenbankprogrammierung 5
F MySQL Was bedeuten die Einzelnen Zeichen in Select Querrys? Datenbankprogrammierung 1
J SQL SELECT mit einem Array Datenbankprogrammierung 1
J SELECT Abfrage/Suche Datenbankprogrammierung 4
E Kann man in einer if-Bedingung auch SELECT-Statements überprüfen? Datenbankprogrammierung 23
M SQL-Exception trotz funktionierendem SELECT Datenbankprogrammierung 4
U PostgreSQL SELECT Statement Datenbankprogrammierung 5
L Select Anweisung wird falsch interpretiert Datenbankprogrammierung 3
C HSQLDB Platzhalter in SELECT Datenbankprogrammierung 6
I SELECT bei Datenbankverbindung Datenbankprogrammierung 6
C MySQL JPA - namedQuery (SELECT) -getResultList() - liefert falsches Ergebnis Datenbankprogrammierung 1
S select: alle ergebnisse ermitteln Datenbankprogrammierung 5
G SQLite SQLite Select für View vereinfachen/optimieren Datenbankprogrammierung 4
C SQL-Statement SELECT über 3 Tabellen Datenbankprogrammierung 5
H HSQLDB insert .... values("test1",select test2 from foo) Datenbankprogrammierung 2
D JDBC insert mit select abfrage Datenbankprogrammierung 5
W SELECT oder Programm-Logik Datenbankprogrammierung 10
J Hibernate Select auf Parameterliste Datenbankprogrammierung 3
T MySQL Dynamisch Suchen Select Datenbankprogrammierung 4
D ArrayList in Select Datenbankprogrammierung 12
N Select mit join Datenbankprogrammierung 3
F Oracle select sum() join select sum() Datenbankprogrammierung 9
B SELECT ja - INSERT nein (MySQL) Datenbankprogrammierung 3
R Oracle Performance bei SELECT mit vielen Reihen Datenbankprogrammierung 5
T MySQL Db select * und Insert schlagen fehl Datenbankprogrammierung 2
I Select-Statement optimieren Datenbankprogrammierung 14
M Variable in SQL SELECT * FROM ... WHERE mithilfe von PreparedStatement benutzen? Datenbankprogrammierung 28
R Derby/JavaDB Möglichkeit von einem Random Select! Datenbankprogrammierung 6
B Mehrfachschachtelung SELECT Datenbankprogrammierung 2
T MySQL Select: Zusammenfassen von Daten und bilden von Durchschnitt? Datenbankprogrammierung 4
GianaSisters MySQL Datenbank Select error Datenbankprogrammierung 5
R Select Statement als temporärer Table Datenbankprogrammierung 7
R Derby/JavaDB Select Statement Where bedingung will nicht ganz! Datenbankprogrammierung 4
R Derby/JavaDB Select TOP Statement geht nicht Datenbankprogrammierung 3
S MySQL Problem mit SELECT bzw encoding Datenbankprogrammierung 4
B HSQLDB Probleme mit Select...Where Abfrage Datenbankprogrammierung 16
F wie funktioniert if Statement in SELECT? Datenbankprogrammierung 2
J [Hibernate] Select Statement Datenbankprogrammierung 4
A SQLite SELECT von ungleichen Spaltenpaaren Datenbankprogrammierung 10
Eldorado MySQL SELECT mit GROUP BY und INNER JOIN Datenbankprogrammierung 2
M Hibernate JPQL SELECT optional? Datenbankprogrammierung 2
C Datenbank-Abfrage, if im Select Datenbankprogrammierung 9
G Aufruf von SELECT INTO Datenbankprogrammierung 8
B H2 PreparedStatement SELECT * FROM ? Datenbankprogrammierung 4
X Select Query auf Substring Datenbankprogrammierung 2
S Select eines bestimmten Datensatzes Datenbankprogrammierung 4
M Select * from mydaten where ... Datenbankprogrammierung 4
T Unerwartete Datenbankausgabe bei "select now()" (es wird ein .0 angehängt) Datenbankprogrammierung 5
M Probleme bei Select in Schleife Datenbankprogrammierung 7
G SELECT liefert leere Zeilen Datenbankprogrammierung 32
M SELECT longtext -> als String behandeln Datenbankprogrammierung 6
H Select in einem Select Datenbankprogrammierung 7
G Select- Abfrage Datenbankprogrammierung 19
S Insert mit Select Datenbankprogrammierung 6
G MSSQL Server SELECT Abfrage funktioniert nicht Datenbankprogrammierung 4
R SELECT aus hsqldb mit Parameter Datenbankprogrammierung 2
H Beim insert bekomme ich den Fehler missing select keyword Datenbankprogrammierung 2
A Problem mit einem Select-Befehl Datenbankprogrammierung 5
E Neues select auf ein vorhandenes Resultset Datenbankprogrammierung 11
A SELECT-Anweisung liefert keine Datensätze zurück Datenbankprogrammierung 9
S Select über mehrere Datenbanksysteme Datenbankprogrammierung 14
T select Abfrage in Java Integer speichern ? Datenbankprogrammierung 2
B fehler bei select befehl Datenbankprogrammierung 5
S Select von bis in DB2 Datenbankprogrammierung 8
S Select mit PreparedStatement Datenbankprogrammierung 2
E Ein If und ein SELECT in Oracle? Datenbankprogrammierung 2
T Select Statement auf Relation Datenbankprogrammierung 3
S PostgreSQL SELECT/UPDATE etc. Datenbankprogrammierung 4
4 Probleme mit Select abfrage Datenbankprogrammierung 4
G Fehler in der select-Abfrage Datenbankprogrammierung 3
N SELECT: Datensatz sperren Datenbankprogrammierung 6
isowiz SELECT SUM() Ergebnis in Java abfragen Datenbankprogrammierung 6
T LIMIT In SELECT Anweisung Datenbankprogrammierung 4
R Select und Insert in Schleife - Problem mit ResultSet Datenbankprogrammierung 2
G SELECT Name= " " verhindern Datenbankprogrammierung 5
G Syntax für Select - Abfrage mit Variablen Datenbankprogrammierung 39
J SELECT-Statement Datenbankprogrammierung 4
R Select auf der Konsole ausgeben Datenbankprogrammierung 2
D brauche mal kurz hilfe bei einem select-stmt Datenbankprogrammierung 6
G Select-Abfragen sind sehr langsam Datenbankprogrammierung 7
D HSQLSB SELECT Datenbankprogrammierung 9

Ähnliche Java Themen

Neue Themen


Oben