TIMESTAMP
und DATETIME
Felder repräsentieren sowohl ein Datum (wie 2016.08.18) und eine Zeit (wie 07:43:20). Dies bedeutet, dass myTimestamp = '2016-08-18'
sehr unwahrscheinlich ist true
herauskommen. Es erscheint nur dann richtig, wenn myTimestamp
den genauen Wert 2016-08-18 00:00:00
hat.
Wenn Sie Datum/Zeit-Werte als Text darzustellen, müssen Sie das ISO-Format verwenden, die wie folgt aussieht:
2016-08-18 07:43:20
Wenn Sie unterschiedlich formatierten Text verwenden möchten, können Sie , aber Sie müssen es konvertieren using STR_TO_DATE()
in MySQL. Diese Konvertierungsfunktionen sind im Allgemeinen nicht zwischen verschiedenen Marken und Modellen von RDBMS-Servern standardisiert.
- Um alle Zeitstempelwerte eines Tages zu erhalten, müssen Sie einen Bereich suchen. Dies ist der beste Weg, das zu tun:
WHERE myTimestamp >= DATE('2016-08-18') AND myTimestamp < DATE('2016-08-18') + INTERVAL 1 DAY
Diese Methode des Suchens, während ein wenig ausführlicher als andere, kann MySQL einen Index für myTimestamp verwenden. Wenn Ihr Tisch viele Reihen hat, kann dies erstaunlich viel Zeit sparen.
Die Verarbeitung von Datum und Uhrzeit ist meist nicht zwischen Herstellern und Modellen von Datenbankservern standardisiert.
Bearbeiten Die Abfrage im Kommentar ist fehlerhaft. Dort heißt es:
SELECT b.name, b.publisher, sum(p.copies)
FROM PurchaseEntity p, BookEntity b /* old-timey comma join! */
WHERE p.bookEntity.bookId = b.bookId /* wrong! */
AND date(p.purchaseTime)= '2016-08-18'
group by b.bookId /* nonstandard! */
Du p.bookEntity.bookId
in einer WHERE
-Klausel. Das ist nicht richtig.
Sie verwenden auch die nonstandard extension to GROUP BY
von MySQL.
Ihre Abfrage sollte das wahrscheinlich sagen. Sie sollten diese Abfrage mit einem SQL-Client-Programm testen, bevor Sie versuchen, es in Ihrem Java-Programm zu erstellen.
SELECT b.name, b.publisher, sum(p.copies)
FROM PurchaseEntity p,
JOIN BookEntity b ON p.bookId = b.bookId
AND date(p.purchaseTime)= '2016-08-18'
group by b.name, b.publisher
überprüfen mit einer Zeit dann funktioniert es, wie diese myTimestamp = ‚2016.08.18 15.53.57‘ –