Suche den nächsten timestamp

RezaScript

Bekanntes Mitglied
Hallo,

In meiner MySQL-Datenbank habe ich eine Spalte, die date_of_birth heisst. Diese beinhaltet Timestamps wie:
483753600 // <-- 1985
799286400 // <-- 1995
1234564290 // <-- 2009
1430438400 // <-- 2015

Mit dem Timestamp 736214400 (welche das Jahr 1993 ausgibt), möchte ich erfahren, welche der Einträge in der Datenbank den Timestamp am nähesten sind und zwar ganz egal, ob drüber oder drunter. In diesem Fall müsste es mir also den Timestamp 799286400 (1995) ausgeben.

Ich habe es so ausprobiert:
SQL:
SELECT uid FROM personal WHERE personal.date_of_birth > 736214400 OR personal.date_of_birth < 736214400 LIMIT 1

Die Ausgabe wird 1985 sein, sollte aber jedoch 1995 sein, da 1993 näher an 1995 liegt.

Hätte da jemand eine Lösung für mich?
 

RezaScript

Bekanntes Mitglied
Hmm, das gibt mir folgendes aus:
Code:
array(1) {
  [0]=>
  array(1) {
    ["MIN(ABS(736214400 - date_of_birth ))"]=>
    string(8) "63072000"
  }
}

63072000 = 1971
 

RezaScript

Bekanntes Mitglied
Ich konnte es nun so lösen:

SQL:
SELECT uid FROM personal ORDER BY ABS(date_of_birth - 736214400) LIMIT 1
 

mihe7

Top Contributor
Was auch funktionieren sollte:
1. Gib mir die uid aller Personen p1 für die gilt: es existiert keine andere Person p2 mit kleinerem "Timestamp-Abstand".
2. Gib mir die uid aller Personen p1, deren "Timestamp-Abstand" identisch mit dem kleinsten "Timestamp-Abstand" aller Personen ist.

In SQL (ungetestet):
SQL:
SELECT uid
  FROM personal p1
 WHERE NOT EXISTS (
         SELECT 1 
           FROM personal p2
          WHERE ABS(p2.date_of_birth - 1335830400) < ABS(p1.date_of_birth - 1335830400)
       );
bzw.
SQL:
SELECT uid
  FROM personal
 WHERE ABS(date_of_birth - 1335830400) = (
         SELECT min(abs(date_of_birth - 1335830400)) 
           FROM personal
       );

Was besser/schneller ist, hängt von der Qualität des Optimierers des verwendeten DBMS ab. MySQL da teilweise überhaupt nicht gut darin -> Ausführungsplan anschauen.
 

Thallius

Top Contributor
Hmm, das gibt mir folgendes aus:
Code:
array(1) {
  [0]=>
  array(1) {
    ["MIN(ABS(736214400 - date_of_birth ))"]=>
    string(8) "63072000"
  }
}

63072000 = 1971

Naja bisschen selber denken hätte ich jetzt schon erwartet. Du bekommst so natürlich die Differenz. Wenn du den Timesharing haben willst, musste halt noch ne Column mehr selektieren
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
L SQL-Suche Datenbankprogrammierung 2
S Suche In SQL Datenbank mit array Datenbankprogrammierung 6
H suche eine Login system Bibliothek für Java Datenbankprogrammierung 5
D MySQL Suche nach Max Value in einer Tabelle Datenbankprogrammierung 7
M SQLite Suche nach String Datenbankprogrammierung 4
K JPA Suche Datenbankprogrammierung 14
J SELECT Abfrage/Suche Datenbankprogrammierung 4
AssELAss Oracle Suche nach Umlauten Ä und Ae ermöglichen Datenbankprogrammierung 11
AssELAss Oracle Wildcard-Suche über zwei Felder Datenbankprogrammierung 5
ARadauer Umgekehrte Suche mit Wildcards Datenbankprogrammierung 4
N suche embedded key-value-datenkank Datenbankprogrammierung 2
Screen Ich suche eine SQLDatenbank ohne JDBC-Treiber Datenbankprogrammierung 12
F suche Erstanschub für DB-Zugriff Datenbankprogrammierung 9
fastjack Kombinierte Suche und verschiedene Datumsformate Datenbankprogrammierung 2
B Suche Query um genau einen Wert einer def. Gruppe aus einer Tabelle zu erhalten. Datenbankprogrammierung 2
A Suche Datenbankprogrammierung 4
U Suche OpenSource Projekt ? Datenbankprogrammierung 9
J Suche geeignete Datenbankstruktur Datenbankprogrammierung 3
M sql-code für suche in tabelle nach höchster transaktionsnr Datenbankprogrammierung 12
H Suche ein Hibernate-DAO-Gerüst zum lernen Datenbankprogrammierung 9
J Suche für meine Anwendung optimale Datenbank ! Datenbankprogrammierung 26
S LIKE - Suche in DB Datenbankprogrammierung 18
R MySQL Syntax für suche nach Textteil Datenbankprogrammierung 8
F Suche JDBC-Treiber-Installationsanleitung (SUSE Linux) Datenbankprogrammierung 18
F suche MySQl-Befehl um Datensatz an Tabellenende zu schreiben Datenbankprogrammierung 2
Zrebna Noobfrage: Konvertierung von SQL-Datentyp 'timestamp with time zone' in Java-Datentyp Datenbankprogrammierung 3
D mySQL Timestamp in RegularTimePeriod bzw Second Datenbankprogrammierung 3
E Wie kann man in DB2 TIMESTAMP Werte hinzufügen? Datenbankprogrammierung 2
ruutaiokwu unix-timestamp in millisekunden mit t-sql? Datenbankprogrammierung 5
P Java Timestamp in Datenbank einfügen Datenbankprogrammierung 5
A WHERE datetime < (util.Date | sql.Date | sql.Timestamp | dateString) Datenbankprogrammierung 2
G Timestamp auf 0 setzen Datenbankprogrammierung 7
G MySQL Timestamp null Datenbankprogrammierung 2
P Probleme mit Oracle Timestamp Datenbankprogrammierung 3
Z derby abfrage von einem Timestamp Datenbankprogrammierung 2
F Hibernate mit MySQL Beispiel und Timestamp Datenbankprogrammierung 6
R Interne Manipulation von Timestamp Datenbankprogrammierung 3
J Timestamp oder Date Datenbankprogrammierung 2
S Timestamp != Timestamp? Datenbankprogrammierung 8
S Timestamp-Problem Datenbankprogrammierung 9
R ResultSet liefert oracle.sql.TIMESTAMP, aber unbrauchbar Datenbankprogrammierung 9

Ähnliche Java Themen

Neue Themen


Oben