TIMESTAMP
및 DATETIME
필드가 날짜를 모두 대표를 (2016년 8월 18일를 등) 한 시간 (예 : 07:43:20). 즉, myTimestamp = '2016-08-18'
은 매우 희박합니다 (true
). myTimestamp
의 정확한 값이 2016-08-18 00:00:00
인 경우에만 true가됩니다. 당신이 텍스트로 날짜/시간 값을 나타낼 때
,이처럼 보이는 ISO 형식을 사용해야합니다
2016-08-18 07:43:20
다르게 형식의 텍스트를 사용하려는 경우, 당신이 할 수있는 , 당신은 그것을 using STR_TO_DATE()
in MySQL로 변환해야합니다. 이러한 변환 기능은 일반적으로 RDBMS 서 v의 다른 제조업체와 모델간에 표준화되지 않습니다.
- 하루에 모든 타임 스탬프 값을 가져 오려면 범위를 검색해야합니다. , MySQL은 myTimestamp에 인덱스를 사용할 수 있도록 다른 사람보다 좀 더 자세한하면서, 검색의
WHERE myTimestamp >= DATE('2016-08-18') AND myTimestamp < DATE('2016-08-18') + INTERVAL 1 DAY
이 방법이 그렇게 할 수있는 가장 좋은 방법입니다. 테이블에 행 수가 많으면 시간이 많이 절약됩니다.
날짜 및 시간 처리는 데이터베이스 서버의 제조업체와 모델간에 대부분 표준화되지 않았습니다.
편집 여기에있는 설명의 쿼리 형식이 잘못되었습니다. 그것은 말한다 : 당신은 WHERE
절에 p.bookEntity.bookId
을 사용하고
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! */
. 그건 맞지 않습니다.
당신은 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년 8월 18일 15시 53분 57초' –