我正在处理一个家庭作业问题。用于数据库 SQL 编程。
Q4。使用今天的日期(当前日期),确定书店销售的每本书的年龄(以月为单位)。确保显示整个月份;忽略月份的任何部分。显示书名、出版日期、当前日期和年龄。为年龄列使用列别名。
所需的查询结果:
TITLE PUBDATE SYSDATE AGE
BODYBUILD IN 10 MINUTES A DAY | 21-JAN-01 00:00:00 | 14-NOV-12 13:16:35 | 141
REVENGE OF MICKEY | 14-DEC-01 00:00:00 | 14-NOV-12 13:16:35 | 131
BUILDING A CAR WITH TOOTHPICKS | 18-MAR-02 00:00:00 | 14-NOV-12 13:16:35 | 127
DATABASE IMPLEMENTATION | 04-JUN-99 00:00:00 | 14-NOV-12 13:16:35 | 161
COOKING WITH MUSHROOMS | 28-FEB-00 00:00:00 | 14-NOV-12 13:16:35 | 152
HOLY GRAIL OF ORACLE | 31-DEC-01 00:00:00 | 14-NOV-12 13:16:35 | 130
14 rows selected
这是一个书籍表,有 pub_date,我正在使用 sysdate 进行一些间隔计算。pub_date 的数据类型是 DATE。
我已经解决了这个问题,但是我无法为发布日期获得这个四舍五入的时间。它应该以 HH:MM:SS 为 00:00:00 四舍五入,但我的编码没有得到正确的结果。这是我所做的:
SELECT title, TO_CHAR(ROUND(pubdate), 'DD-MON-YY HH24:MM:SS') AS pubdate,
TO_CHAR(SYSDATE, 'DD-MON-YY HH24:MM:SS') AS "SYSDATE",
ROUND(SYSDATE - TO_DATE(pubdate)) AS age
FROM books;
我对年龄的计算出了点问题,ROUND(SYSDATE - TO_DATE(pubdate))
。
我对圆形发布日期的编码有问题,TO_CHAR(ROUND(pubdate), 'DD-MON-YY HH24:MM:SS') AS pubdate
.
只是想知道如何纠正我在计算年龄方面的错误,以及如何获得正确的四舍五入日期,就像它在那里一样。
这个问题参考 Murach 的 Oracle SQL,第 17 章如何使用时间戳和间隔。