當前位置:首頁 » 編程語言 » 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