JPA Extrahiere Datum vom Timestamp

Diskutiere Extrahiere Datum vom Timestamp im Data Tier Forum; Hallo, ich habe in meiner MySQL-DB eine Tabelle in der es zwei DATETIME-Felder gibt "start" und "ende". Für die Anbindung der Datenbank an die...

  1. Samson_Miller
    Samson_Miller Neues Mitglied
    Hallo,

    ich habe in meiner MySQL-DB eine Tabelle in der es zwei DATETIME-Felder gibt "start" und "ende". Für die Anbindung der Datenbank an die Applikation nutze ich openjpa-2.4.0.

    Ich würde jetzt gerne per Select alle Einträge aus der Tabelle herausbekommen, bei denen das "start"- und "ende"-Datum an dem heutigen Tag ist. In SQL selber ist das nicht schwer:

    Code (Text):

    SELECT * FROM tabelle WHERE DATE(start) = CURDATE() AND DATE(ende) = CURDATE();
     
    Aber wie kann ich dieses Select in eine NamedQuery unterbringen? die MySQL-Funktion "CURDATE()" kann ich durch "current_date" wohl ersetzen, aber die Fuktion "DATE()" gibt es in JPQL nicht. Ich habe schon hinweise gefunden, die sagen man solle "func(DATE, start)" nutzen, aber auch diesen Befehl gibt es nicht in JPQL.

    Gibt es irgendeine Möglichkeit die "DATE()"-Fuktion von MySQL zu nutzen?
    Oder gibt es in JPQL die Möglichkeit die Zeit von einem java.util.Date-Feld abzuschneiden?
     
  2. Vielleicht hilft dir das kostenlose Training weiter --> (hier klicken)
  3. stg
    stg Bekanntes Mitglied
    Wenn du Datenbank-spezifische Funktionen nutzen willst, dann verwende einfach eine NativeQuery. Da muss man sich dann einfach nur im Klaren darüber sein, dass die Lösung nicht mehr ohne weiteres auf andere DBMS portierbar ist.

    Ansonsten greife auf die Criteria API zurück, die sollte auch alles bieten, was nötig ist.

    Weitere Möglichkeit wäre natürlich auch einfach zu prüfen, ob ein Eintrag zwischen bspw 29.01.2015 00:00:00 und 29.01.2015 23:59:59 liegt. Ähnlich geht das natürlich auch für den Monat oder Jahr oder was auch immer.
     
  4. Centai
    Centai Neues Mitglied
    Hast Du folgendes versucht:

    Code (Text):
    SELECT n FROM Tabelle n WHERE n.start > :lastDate AND n.start < :nextDate AND n.ende > :lastDate AND n.ende < :nextDate
    Mit folgendem Code:

    Code (Java):

    Date date = new Date();
    Calendar cal = Calendar.getInstance();
    cal.setTime(date);
    cal.set(Calendar.HOUR_OF_DAY, 0);
    cal.set(Calendar.MINUTE, 0);
    cal.set(Calendar.SECOND, 0);
    cal.set(Calendar.MILLISECOND, 0);
    cal.add(Calendar.DAY_OF_MONTH, -1);
    Date lastDate = cal.getTime();
    cal.add(Calendar.DAY_OF_MONTH, 2);
    Date nextDate = cal.getTime();

    Query q = em.createNamedQuery(...);
    q.setParameter("nextDate", nextDate);
    q.setParameter("lastDate", lastDate);

     
     
  5. Schau dir jetzt hier den Kurs an und lerne Java zu programmieren: --> Hier klicken, um mehr zu erfahren (Klick)
Die Seite wird geladen...

Extrahiere Datum vom Timestamp - Ähnliche Themen

Daten (im Sinne von Datum) aus Webseiten extrahieren
Daten (im Sinne von Datum) aus Webseiten extrahieren im Forum Java Basics - Anfänger-Themen
nio Pfad aus Dateinamen extrahieren
nio Pfad aus Dateinamen extrahieren im Forum Java Basics - Anfänger-Themen
Zahlen extrahieren
Zahlen extrahieren im Forum Java Basics - Anfänger-Themen
Zeile aus mehrdimensionalem Array extrahieren uns abspeichern
Zeile aus mehrdimensionalem Array extrahieren uns abspeichern im Forum Java Basics - Anfänger-Themen
Eindeutige Elemente aus Array extrahieren
Eindeutige Elemente aus Array extrahieren im Forum Java Basics - Anfänger-Themen
Thema: Extrahiere Datum vom Timestamp