我知道我们不能在表中有日期的列上使用数学函数。但我遇到了以下将日期转换为数字的SQL语句
SELECT avg(ORDER_DATE-SYSDATE) FROM ORDERS;
TABLE NAME ORDERS
COLUMNS DATATYPE
ORDER_DATE : SYSDATE
ORDER_AMT: NUMBER我想知道上面的sql语句是如何将日期转换为数字的
发布于 2014-08-11 20:31:01
以下是日期值的平均值:
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(d - to_date('01-01-1970', 'MM-DD-YYYY')它提供d日期值(表格中的值)和01-01-1970之间的天数differencethe value of the difference*24*60*60*1000计算01-01-1970日期值(表格中的值)和01-01-1970之间的毫秒数(因为一天有24小时,一小时有60分钟,一分钟有60秒,1秒有1000天查询计算表的平均毫秒数/24/60/60/1000将平均毫秒数转换回天数您就得到了表中的平均天数。01-01-1970日期相加(因为我之前减去了它),它将得到平均日期(当您将数字添加到日期时,就会将天数添加到日期)https://stackoverflow.com/questions/25243073
复制相似问题