TIMESTAMP
и DATETIME
поля представляют как дату (например, 2016-08-18) и время (например, 07:43:20). Это означает, что myTimestamp = '2016-08-18'
вряд ли выйдет true
. Это получается только в том случае, если myTimestamp
имеет точное значение 2016-08-18 00:00:00
.
Когда вы представляете значения даты/времени в виде текста, вы должны использовать формат ISO, который выглядит следующим образом:
2016-08-18 07:43:20
Если вы хотите использовать по-разному форматированный текст, вы можете , но вы должны его преобразовать using STR_TO_DATE()
in MySQL. Эти функции преобразования обычно не стандартизируются между различными марками и моделями серверов РСУБД.
- Чтобы получить все значения временных меток за один день, вам необходимо выполнить поиск диапазона. Это самый лучший способ сделать это:
WHERE myTimestamp >= DATE('2016-08-18') AND myTimestamp < DATE('2016-08-18') + INTERVAL 1 DAY
Этот метод поиска, в то время как немного более многословным, чем другие, позволяет MySQL использовать индекс на myTimestamp. Если в вашей таблице много строк, это может сэкономить поразительное количество времени.
Обработка даты и времени в основном не стандартизирована между марками и моделями сервера баз данных.
Редактировать Запрос в комментарии здесь неверен. Он говорит:
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! */
Вы используете p.bookEntity.bookId
в пункте WHERE
. Это не правильно.
Вы также используете MySQL nonstandard extension to GROUP BY
.
Возможно, ваш запрос должен сказать это. Вы должны протестировать этот запрос с помощью клиентской программы SQL, прежде чем пытаться создать его в своей программе Java.
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
Проверить со временем, то он работает, как этот myTimestamp = «2016-08-18 15:53:57» –