私はdb.grussell.orgでexecisesからSQLを練習し、チュートリアル5(https://db.grussell.org/sql/interface.cgi?tn=Tutorial%205&qn=9)から10 exceciseてるが何歳の従業員を要求しています月。日付操作が
ここでここで質問
How old is each employee in months.
Format this as employee number against age in months.
Round to the nearest whole number of months.
は(EMPNOは従業員のIDで、DOBは、従業員表に日付型として誕生日である
select e.empno,
round(months_between (trunc(sysdate,'mm'),trunc(dob)))
from employee e
ここでは私のしている私のコードです結果
EMPLOYEE MONTHS_BETWEEN
1 882
2 845
3 674
4 647
5 705
6 756
7 832
8 714
9 714
10 670
11 658
12 700
13 902
14 853
15 748
16 658
17 683
18 673
19 702
20 640
21 622
22 927
23 751
24 810
25 758
26 689
27 779
28 732
29 586
30 633
31 744
32 695
従業員番号が5,10,16の行については、何らかの理由で結果が正しくない私は理解できません、他のすべての結果は正しいです。
私は、ラウンド関数に何かが足りないか、MONTHS_BETWEENパラメータにいくつかの日付を加算または減算ていないよということ疑っています。
誰かがそれらと間違っているだろうかについて正しい方向に私を指すもらえますか? データの一部が正しく、一部ではありませんなぜ私は本当に理解できない... は運動が間違っているが、私が言うことができないだろうという可能性があります。あなたがsysdate
を切り捨てているので
おかげゴードン、私は前の演習から切り捨てる使用していたので、コピー+過去があり、それらを入れて、私はそれが操作を台無しに実現しなかった。
は、代わりにだけ行います。 –