首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >日期函数的平均值

问日期函数的平均值
EN

Stack Overflow用户
提问于 2014-08-11 20:15:43
回答 1查看 66关注 0票数 0

我知道我们不能在表中有日期的列上使用数学函数。但我遇到了以下将日期转换为数字的SQL语句

代码语言:javascript
复制
SELECT avg(ORDER_DATE-SYSDATE) FROM ORDERS; 
TABLE NAME ORDERS 

COLUMNS     DATATYPE        
ORDER_DATE : SYSDATE
ORDER_AMT:   NUMBER

我想知道上面的sql语句是如何将日期转换为数字的

EN

回答 1

Stack Overflow用户

发布于 2014-08-11 20:31:01

以下是日期值的平均值:

代码语言:javascript
复制
with t(d) as (
  select sysdate from dual union all
  select sysdate + 1 from dual union all
  select ADD_MONTHS(sysdate, 1) from dual 
)
SELECT avg((d - to_date('01-01-1970', 'MM-DD-YYYY'))*24*60*60*1000)/24/60/60/1000 + to_date('01-01-1970', 'MM-DD-YYYY') difference_in_ms
  FROM t

  1. (d - to_date('01-01-1970', 'MM-DD-YYYY')它提供d日期值(表格中的值)和01-01-1970之间的天数difference
  2. the value of the difference*24*60*60*1000计算01-01-1970日期值(表格中的值)和01-01-1970之间的毫秒数(因为一天有24小时,一小时有60分钟,一分钟有60秒,1秒有1000天查询计算表的平均毫秒数
  3. 然后使用/24/60/60/1000将平均毫秒数转换回天数您就得到了表中的平均天数。
  4. 然后我将这个平均天数与01-01-1970日期相加(因为我之前减去了它),它将得到平均日期(当您将数字添加到日期时,就会将天数添加到日期)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25243073

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档