在SQL server 中DATEDIFF函数,在Oracle中用那个?

gzxwxj 2007-04-12 07:21:49
在SQL server 中DATEDIFF函数,在Oracle中用那个?帮忙,谢谢.
...全文
5031 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
JoeBlackzqq 2011-06-01
  • 打赏
  • 举报
回复
oracle中两个date类型的字段可以直接相减的,如d1-d2,单位是“天”(可能带小数位),再转换成你要的小时、分、月,等等。

如果参数是字符串形式的话,可以用to_date(),转换成相应的date类型
Stephen_ca 2011-05-30
  • 打赏
  • 举报
回复
转转ing
youlingsxcn 2011-05-30
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 xionglinxlanna 的回复:]
上面那种解决方案,如果是同一天内算还是0
[/Quote]

同一天 当然相差是0天了

Select to_number(to_date('2011-05-01 05:00:00','yyyy-mm-dd hh24:mi:ss')-to_date('2011-05-01','yyyy-mm-dd hh24:mi:ss'))*24 From dual

没明白楼上的意思
xionglinxlanna 2010-03-03
  • 打赏
  • 举报
回复
上面那种解决方案,如果是同一天内算还是0
wangsong145 2008-11-30
  • 打赏
  • 举报
回复
[Quote=引用楼主 gzxwxj 的帖子:]
在SQL server 中DATEDIFF函数,在Oracle中用那个?帮忙,谢谢.
[/Quote]
在oracle中计算时间的差值,直接两个时间相减,得到的结果就是天数,然后*24得到小时数,要得到其他结果直接乘法计算就可以了。
javabeanzhang 2008-11-28
  • 打赏
  • 举报
回复
o
pboy2925 2008-07-10
  • 打赏
  • 举报
回复
找了好久也没找到定义的比较好用的 Oracle DateDiff 函数.
weiwei6054 2007-04-12
  • 打赏
  • 举报
回复
Oracle没有DATEDIFF函数,要自定义了!!
hongqi162 2007-04-12
  • 打赏
  • 举报
回复
create or replace function
-- -- works in roughly the same way as sybase datsdiff
-- call would be eg. datediff('month',date1,date2)
-- p_what would be 'HOUR', 'DAY','MONTH' OR 'QUARTER'
datediff( p_what in varchar2,
p_d1 in date,
p_d2 in date ) return number
as
l_result number;
begin
l_result:=null;
if (upper(p_what) = 'HOUR') then
l_result:=((p_d2-p_d1)*24);
end if;
if (upper(p_what) = 'DAY') then
l_result:=(p_d2-p_d1);
end if;
if (upper(p_what) = 'MONTH') then
l_result:=round(MONTHS_BETWEEN(p_d2,p_d1),0);
end if;
if (upper(p_what) = 'QUARTER') then
l_result:=((floor(MONTHS_BETWEEN(p_d2,TRUNC(p_d2,'YEAR'))/3)+1) - (floor(MONTHS_BETWEEN(p_d1,TRUNC(p_d1,'YEAR'))/3)+1) + (((to_char(p_d2, 'yyyy')) - (to_char(p_d1, 'yyyy')))*4));
end if;
l_result:=floor(l_result);
return l_result;
end;
/


SQL> SELECT DATEDIFF('MONTH','11-JUL-1975','07-JUN-2004') FROM DUAL;

DATEDIFF('MONTH','11-JUL-1975','07-JUN-2004')
---------------------------------------------
347
hongqi162 2007-04-12
  • 打赏
  • 举报
回复
SELECT (d1-d2)*24*60*60 vaule FROM DUAL;

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧