当前位置:首页 » 编程语言 » sqloracledatediff
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sqloracledatediff

发布时间: 2022-04-27 18:13:45

㈠ datediff函数用法!

1、datediff函数语法用法:

表达式DateDiff(timeinterval,date1,date2 [, firstdayofweek [, firstweekofyear]])

允许数据类型: timeinterval 表示相隔时间的类型,代码为:年份 yy、yyyy 季度 qq、q;月份 mm、m;每年的某一日 dy、y;日期 dd、d;星期 wk、ww;工作日 dw;小时 hh;分钟 mi、n;秒 ss、s;毫秒 ms。

2、datediff函数用法示例:

<%

fromDate = #9/9/00#

toDate = #1/1/2000#

response.write "There are " & _

DateDiff("d",fromDate,toDate) & _

" days to millenium from 9/9/00."

%>

返回结果: 从9/9/00 到2000年还有 150 天。

(1)sqloracledatediff扩展阅读:

datediff函数应用范围:

1,该函数在mysql中可用

2,该函数在sybase中可用

3,该函数在在oracle中不可用!

------------------------------------------------------------

select datediff(''d'','2003-01-01','2003-01-02')返回的是1;

select datediff(''d'','2003-01-02','2003-01-01')返回的是-1;

可见datediff返回的是date2和date1之间在给定参数timeinterval下的差值。

注:

在sql2000下测试 "h"时是错误的,应该是 hh,例如:

select datediff(hh,'2003-01-01','2003-01-02') 返回的是24。

㈡ 高手进!如何把Sql里面的datediff()方法,在Oracle里面如何替换使用啊

create or replace function datediff(type in varchar2, startTime in varchar2,endTime in varchar2,v in varchar2) return number as
v_result number;
sql_1 varchar2(200);
begin
dbms_output.put_line('1');
if(type = 'day') then
sql_1 := 'select '||v||'(TO_NUMBER(to_date('''||startTime||''',''YYYY-MM-DD'') - to_date('''||endTime||''',''YYYY-MM-DD''))) from al';
dbms_output.put_line('1');
elsif(type = 'month') then
sql_1 := 'select '||v||'(months_between(to_date('''||startTime||''',''YYYY-MM-DD'') - to_date('''||endTime||''',''YYYY-MM-DD''))) from al' ;
dbms_output.put_line('1');
elsif(type = 'week') then
dbms_output.put_line('1');
sql_1 := 'select '||v||'(TO_NUMBER(to_date('''||startTime||''',''YYYY-MM-DD'') - to_date('''||endTime||''',''YYYY-MM-DD''))/7) from al ';
end if;
dbms_output.put_line(sql_1);
EXECUTE IMMEDIATE sql_1 into v_result ;
return (v_result);
end;
--先执行以上函数,这样就在Oracle自己写了一个该函数;
使用时候可以这样:
select datediff('week','2012-09-01','2012-08-01','round') from al ;
--说明'week'表示周,'month'表示月,'day'表示天
--中间传俩日期
--第四个参数:周或月四舍五入用‘round’ ,向上取整用‘ceil’ 向下取整用‘floor’

㈢ plsql的datediff怎么用不了

在oracle中没有datediff()函数
可以用以下方法在oracle中实现该函数的功能:
1.利用日期间的加减运算
天:
ROUND(TO_NUMBER(END_DATE - START_DATE))
小时:
ROUND(TO_NUMBER(END_DATE - START_DATE) * 24)
分钟:
ROUND(TO_NUMBER(END_DATE - START_DATE) * 24 * 60)
秒:
ROUND(TO_NUMBER(END_DATE - START_DATE) * 24 * 60 * 60)
毫秒:
ROUND(TO_NUMBER(END_DATE - START_DATE) * 24 * 60 * 60 * 60)

2.写函数
Create Or Replace Function CDate(Datechar In Varchar2) Return Date Is
ReallyDo Date;
Begin
Select to_date(to_char(to_date(to_char(Datechar), 'YYYY-MM-DD HH24:MI:SS'),
'YYYY-MM-DD'),
'YYYY-MM-DD')
Into ReallyDo
From Dual;
Return(ReallyDo);
End CDate;

Create Or Replace Function CDateTime(Datechar In Varchar2) Return Date Is
ReallyDo Date;
Begin
Select to_date(to_char(to_date(to_char(Datechar), 'YYYY-MM-DD HH24:MI:SS'),
'YYYY-MM-DD HH24:MI:SS'),
'YYYY-MM-DD HH24:MI:SS')
Into ReallyDo
From Dual;
Return(ReallyDo);
End CDateTime;

Create Or Replace Function Datediff
(
Datepart In Varchar2,
StartDate In Varchar2,
EndDate In Varchar2
) Return Number Is
ReallyDo Numeric;
Begin
Select Case Upper(Datepart)
When 'YYYY' Then
Trunc(Extract(Year From CDate(EndDate)) -
Extract(Year From CDate(StartDate)))
When 'M' Then
Datediff('YYYY', StartDate, EndDate) * 12 +
(Extract(Month From CDate(EndDate)) -
Extract(Month From CDate(StartDate)))
When 'D' Then
Trunc(CDate(EndDate) - CDate(StartDate))
When 'H' Then
Datediff('D', StartDate, EndDate) * 24 +
(to_Number(to_char(CDateTime(EndDate), 'HH24')) -
to_Number(to_char(CDateTime(StartDate), 'HH24')))
When 'N' Then
Datediff('D', StartDate, EndDate) * 24 * 60 +
(to_Number(to_char(CDateTime(EndDate), 'MI')) -
to_Number(to_char(CDateTime(StartDate), 'MI')))
When 'S' Then
Datediff('D', StartDate, EndDate) * 24 * 60 * 60 +
(to_Number(to_char(CDateTime(EndDate), 'SS')) -
to_Number(to_char(CDateTime(StartDate), 'SS')))
Else
-29252888
End
Into ReallyDo
From Dual;
Return(ReallyDo);
End Datediff;

㈣ 有谁知道Oracle中类似于SQL中的datediff函数是什么

直接用两个日期相减,获得的值是天数,可以包含小数;
小数表示相应的时分秒;
如果需要获得小时数,分钟数,分别乘以24,或者乘以24*60
比如:
select sysdate - to_date('2017-10-31 16:00:00','yyyy-mm-dd') from al; -- 天数
select (sysdate - to_date('2017-10-31 16:00:00','yyyy-mm-dd'))*24 from al; -- 小时数

㈤ oracle中功能等同sqlserver中的datediff的函数

是天数的计算,
SQLServer中:
select datediff(day,'2006-05-26 10:11','2006-05-25 11:11')
结果为1天,只判断日期中的天数,是不根据时间来判断的。但是转到ORACLE:
select trunc((to_date('2006-05-26 10:11','YYYY-MM-DD HH:MI') - to_date('2006-05-25 11:11','YYYY-MM-DD HH:MI'))) as datediff from al
结果为0,只有把前面一个日期改成'2006-05-26 11:11'之后的时间才返回1天。
我要求是只根据天数来求值,看来要统一把比较的日期改到最小单位为天的日期,实际使用中是要把sysdate与结果集中字段计算的,该字段compdate是YYYY-MM-DD HH:MI格式的varchar2类型,难道要我这么写:
select trunc(to_date(to_char(sysdate,'YYYYMMDD'),'YYYYMMDD') - to_date(to_char(to_date(compdate,'YYYY-MM-DD HH:MI'),'YYYYMMDD'),'YYYYMMDD')) from table1
感觉太烦了,有更好的办法吗?

-----------------------------
解决方法:

select trunc(sysdate) - trunc(to_date('2006-05-28 10:20','YYYY-MM-DD HH24:MI')) from al

select * from 监控温度表 A where 时间 between '" + Str(dtStart.Value) + "'AND '" + Str(dtEnd.Value) + "' And Not Exists (Select 时间 From 监控温度表 Where DateDiff(mi, 时间, A.时间) <= " + Str(text1.text) + ") order by id

try

select * from 监控温度表 A where 时间 between '" + Str(dtStart.Value) + "'AND '" + Str(dtEnd.Value) + "' And Not Exists (Select 时间 From 监控温度表 Where DateDiff(mi, 时间, A.时间) <=5 ) order by id

㈥ Oracle怎么样用sql语句得出相差的月数

使用Months_between(f,s) 日期f和s间相差月数,但结果有小数。你要整数,可以进行截取。
实例:
SELECT Months_between(SYSDATE,input_date) FROM aa_yudy_deal

㈦ sql中使用了sybase函数datediff(),导致在oracle中执行错误 对该函数进行替换trunc(END_DATE - START_DATE)

条件改成这个就可以了oracle 中直接两个日期相减就是天数
where pubilsh_date - to_date(to_char(sysdate,'yyyy-mm-dd'),'yyyy-mm-dd')>7

㈧ datediff函数的使用方法是如何的

使用方法如下:

1.datediff()的使用格式是:DATEDIFF(datepart,startdate,enddate)。其中startdate(开始日期) 和enddate(结束日期) 参数是合法的日期表达式。

(8)sqloracledatediff扩展阅读:

datediff()使用过程中需要注意的地方:

1.datediff() 函数计算指定的两个日期中第二个日期与第一个日期的时间差的日期部分。换句话说,它得 出两个日期之间的间隔。结果是等于 date2 - date1 的日期部分的带符号整数值。

2.如果datediff()函数中日期参数的数据类型是 smalldatetime,则结果的数据类型也是 smalldatetime。可以使用 DATEADD 向 smalldatetime 值添加秒或毫秒,但只有当 DATEADD 返回的结果日期的改变不小于 1 分钟时,这样做才有意义。

参考资料来源:网络-datediff()函数

㈨ oracle数据库sql语句怎样知道两个日期的天数

oracle 有datediff函数,提示出错肯定是你参数不对;
参考: datediff(''d'',adate,bdate) --如果adate字段 早于bdate字段,值为正,反之为负

㈩ 求高手帮忙!Oracle里面没有datediff()函数,那如何写一个函数精确的计算两日期之间的日、周、月之差

select months_between(enddate, startdate) 月之差,
trunc(enddate) - trunc(startdate) 日之差,
(trunc(enddate) - trunc(startdate)) / 7 周之差
from table1