I创建了由上述模式定义的表和插入值。我在
ISS_DATE中使用了timestamp,因此系统自动将当前日期作为
ISS_DATE的默认值占据。
现在,我必须列出所有学生和书籍名称,作者在特定日期(例如06-08-2019)发行。
我写了这个查询:
SELECT student.stud_name, book.book_name, book.author,iss_rec.iss_date
FROM student, book, iss_rec, membership
WHERE student.stud_no = membership.stud_no
AND membership.Mem_no = iss_rec.Mem_no
AND book.book_no = iss_rec.book_no
AND iss_date = '2019-08-06'
但什么都没有!每当我切断最后一行时:AND iss_date = '2019-08-06'
都会产生列表。但是,我该如何获得我前面提到的特定日期的列表呢?
您可以使用
DATE
函数
AND DATE(iss_date) = '2019-08-06';
仅将您的查询写为:
AND iss_date >= '2019-08-06'
AND iss_date < '2019-08-07'
或更方便:
尽管这看起来很长,但它可以更有效地使用索引。
注意我们停止以这种方式编写查询。 1992。来。加入我们 fwiw,我发现这更容易阅读...
SELECT s.stud_name
, b.book_name
, b.author
, r.iss_date
FROM student s
JOIN membership m
ON m.stud_no = s.stud_no
JOIN iss_rec r
ON r.Mem_no = m.Mem_no
JOIN book b
ON b.book_no = r.book_no
WHERE r.iss_date BETWEEN '2019-08-06 00:00:00' AND '2019-08-06 23:59:59';
您是您的经验,并分享了他们的意见来使他们做出