问题描述
嗨,汤姆,
当我通过一本书中的一个例子时,我遇到了一个我无法解决的问题。
它涉及以下两个脚本及其结果:
脚本1:
脚本2:
基于这些脚本和结果集,结果集2很有意义,因为它返回两个日期之间的天数间隔。我不明白为什么脚本1多年来无法返回正确的值,因为这两行2017年出现,所以我猜这几年都是0?相反,它返回显示间隔分别为7年和3年的值。
任何帮助将不胜感激,以帮助我理解为什么会发生这种情况。
谢谢。
当我通过一本书中的一个例子时,我遇到了一个我无法解决的问题。
它涉及以下两个脚本及其结果:
脚本1:
SELECT loan_id,due_date, tool_out_date, NUMTOYMINTERVAL(due_date - tool_out_date, 'YEAR') "Years" from loan;
Result Set 1: loan_id | due_date | tool_out_date | Years ------------------------------------------- 7 17-02-11 17-02-04 +07-00 8 17-01-05 17-01-02 +03-00
脚本2:
SELECT loan_id,due_date, tool_out_date, NUMTODSINTERVAL(due_date - tool_out_date, 'DAY') "Days" from loan;
Result Set 2: loan_id | due_date | tool_out_date | Days ------------------------------------------------------- 7 17-02-11 17-02-04 +07 00:00:00.000000 8 17-01-05 17-01-02 +03 00:00:00.000000
基于这些脚本和结果集,结果集2很有意义,因为它返回两个日期之间的天数间隔。我不明白为什么脚本1多年来无法返回正确的值,因为这两行2017年出现,所以我猜这几年都是0?相反,它返回显示间隔分别为7年和3年的值。
任何帮助将不胜感激,以帮助我理解为什么会发生这种情况。
谢谢。
专家解答
NUMTOYMINTERVAL是一个 * 构造函数 *,即,它用于 * 构建 * 一个间隔。
因此,如果我想间隔4年,我会发出:
NUMTOYMINTERVAL(4,'年')
所以在你的情况下,我们是:
1) 评估返回数字数据类型的 “due_date-tool _ out _ date”
2) 将该数字传递到构造函数中
它为NUMTODS “工作”,因为 “巧合” 日期减法返回 * 天 * 的数量,并且您在numtodsinterval中使用 'DAY'。例如,如果你做了:
NUMTODSINTERVAL(due_date-tool_out_date,'SECOND') 你不会得到秒数,你会得到 '7' 秒 (就像你得到7年)。
像这样看两个日期之间的平均年份
https://asktom.oracle.com/pls/asktom/asktom.search?tag=calculating-age-in-terms-of-yearsmonths-and-days
因此,如果我想间隔4年,我会发出:
NUMTOYMINTERVAL(4,'年')
所以在你的情况下,我们是:
1) 评估返回数字数据类型的 “due_date-tool _ out _ date”
2) 将该数字传递到构造函数中
它为NUMTODS “工作”,因为 “巧合” 日期减法返回 * 天 * 的数量,并且您在numtodsinterval中使用 'DAY'。例如,如果你做了:
NUMTODSINTERVAL(due_date-tool_out_date,'SECOND') 你不会得到秒数,你会得到 '7' 秒 (就像你得到7年)。
像这样看两个日期之间的平均年份
https://asktom.oracle.com/pls/asktom/asktom.search?tag=calculating-age-in-terms-of-yearsmonths-and-days
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




