當前位置:首頁 » 編程語言 » sql語句時間差
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sql語句時間差

發布時間: 2022-07-19 19:58:02

① 同一個sql語句在不同的機器上執行時間相差很大,為什麼

這個存在幾種可能
一般情況下,最可能的原因是(這里指select)
A機器已經執行過這個sql,或者類似的sql,相關的數據在內存中,能夠直接調用,那麼就快。
B機器沒有執行過類似的sql,相關的數據要從硬碟中讀取,那麼就會慢。
這個其實就相當於一般我們會發現第二次執行比第一次快,就是這個原因。
如果伺服器不同可能也有一定的因素,另外查詢內容的數據量(A內表可能很大,B內的測試數據可能很少)的多少,伺服器的繁忙程度等等。

② 用SQL語句怎麼寫時間差

select to_date('20070506','yyyymmdd') - to_date('20070203','yyyymmdd') from al;
這樣查詢出來是兩個時間的差值——以天為單位的,如果需要以小時為單位的,在減法外面加個括弧,再乘以24就可以了,其他時間單位的,自己類推。

可以這樣直接減,是因為oracle在存儲date型時間的時候,內部是使用數字存儲的,所以可以直接減,如果是用timestamp型時間,可能不可以直接減

③ SQL計算時間差(請看好再回答,問題解決再追加50)

建表時把T設置為計算列即可
或用觸發器完成
create table tb
(
A varchar(32),
B varchar(32),
T as datediff(dd,cast(A as datetime),cast(B as datetime))
)

④ 用SQL語句怎麼寫時間差少於18秒

計算時間差是Oracle DATA數據類型的一個常見問題。Oracle支持日期計算,你可以創建諸如「日期1-日期2」這樣的表達式來計算這兩個日期之間的時間差。

一旦你發現了時間差異,你可以使用簡單的技巧來以天、小時、分鍾或者秒為單位來計算時間差。為了得到數據差,你必須選擇合適的時間度量單位,這樣就可以進行數據格式隱藏。

計算時間差是Oracle DATA數據類型的一個常見問題。Oracle支持日期計算,你可以創建諸如「日期1-日期2」這樣的表達式來計算這兩個日期之間的時間差。

一旦你發現了時間差異,你可以使用簡單的技巧來以天、小時、分鍾或者秒為單位來計算時間差。為了得到數據差,你必須選擇合適的時間度量單位,這樣就可以進行數據格式隱藏。

使用完善復雜的轉換函數來轉換日期是一個誘惑,但是你會發現這不是最好的解決方法。

round(to_number(end-date-start_date))- 消逝的時間(以天為單位)

round(to_number(end-date-start_date)*24)- 消逝的時間(以小時為單位)

round(to_number(end-date-start_date)*1440)- 消逝的時間(以分鍾為單位)

⑤ 求時間差的sql語句。 比如如下數據

select
sum(datediff(millisecond,createtime,
closetime))as
總豪秒數
from
表名
where
msisdn=138
select
sum(datediff(minute,createtime,
closetime))as
總秒數
from
表名
where
msisdn=138
select
sum(datediff(minute,createtime,
closetime))as
總分鍾
from
表名
where
msisdn=138
select
sum(datediff(Hour,createtime,
closetime))as
總小時
from
表名
where
msisdn=138
select
sum(datediff(Day,createtime,
closetime))as
總天數
from
表名
where
msisdn=138
select
sum(datediff(week,createtime,
closetime))as
總天數
from
表名
where
msisdn=138
select
sum(datediff(Month,createtime,
closetime))as
總天數
from
表名
where
msisdn=138
select
sum(datediff(quarter,createtime,
closetime))as
總季數
from
表名
where
msisdn=138
select
sum(datediff(year,createtime,
closetime))as
總年數
from
表名
where
msisdn=138
樓主沒有說
時間單位
,我列出所有,你自己選

⑥ sql怎麼計算時間差

DATEDIFF(mi,開始時間,結束時間)
這個函數可以算出會話時間,mi代表分鍾,
1。兩張表匹配下,sum(算出的會話時間)即可
2.select
訪問客戶,sum(算出的會話時間)
from
...
group
by
訪問客戶
3.用agv(算出的會話時間)
即可
4.select
訪問客戶,agv(算出的會話時間)
from
...
group
by
訪問客戶

⑦ ORACEL sql語句 兩時間欄位求差

兩個Date類型欄位:START_DATE,END_DATE,計算這兩個日期的時間差(分別以天,小時,分鍾,秒,毫秒):

天:

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 * 1000)

Oracle計算時間差函數 2008-08-20 10:00 兩個Date類型欄位:START_DATE,END_DATE,計算這兩個日期的時間差(分別以天,小時,分鍾,秒,毫秒): 天: 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 * 1000)

外加to_date與to_char函數:

ORACLE中:
select to_date('2007-06-28 19:51:20','yyyy-MM-dd HH24:mi:ss') from al;
一般SQL中:
select to_date('2007-06-28 19:51:20','yyyy-MM-dd HH:mm:ss') from al;
區別:
1、HH修改為HH24。
2、分鍾的mm修改為mi。

24 小時的形式顯示出來要用 HH24

select to_char(sysdate,'yyyy-MM-dd HH24:mi:ss') from al;

select to_date('2005-01-01 13:14:20','yyyy-MM-dd HH24:mi:ss') from al;

to_date() function

1. 日期格式參數 含義說明

D 一周中的星期幾

DAY 天的名字,使用空格填充到 9 個字元

DD 月中的第幾天

DDD 年中的第幾天

DY 天的簡寫名

IW ISO 標準的年中的第幾周

IYYY ISO 標準的四位年份

YYYY 四位年份

YYY,YY,Y 年份的最後三位,兩位,一位

HH 小時,按 12 小時計

HH24 小時,按 24 小時計

MI 分

SS 秒

MM 月

Mon 月份的簡寫

Month 月份的全名

W 該月的第幾個星期

WW 年中的第幾個星期 1. 日期時間間隔操作

當前時間減去 7 分鍾的時間

select sysdate,sysdate - interval '7' MINUTE from al

當前時間減去 7 小時的時間

select sysdate - interval '7' hour from al

當前時間減去 7 天的時間

select sysdate - interval '7' day from al

當前時間減去 7 月的時間

select sysdate,sysdate - interval '7' month from al

當前時間減去 7 年的時間

select sysdate,sysdate - interval '7' year from al

時間間隔乘以一個數字

select sysdate,sysdate - 8 *interval '2' hour from al

2. 日期到字元操作

select sysdate,to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from al

select sysdate,to_char(sysdate,'yyyy-mm-dd hh:mi:ss') from al

select sysdate,to_char(sysdate,'yyyy-ddd hh:mi:ss') from al

select sysdate,to_char(sysdate,'yyyy-mm iw-d hh:mi:ss') from al

參考 oracle 的相關關文檔 (ORACLE901DOC/SERVER.901/A90125/SQL_ELEMENTS4.HTM#48515)

3. 字元到日期操作

select to_date('2003-10-17 21:15:37','yyyy-mm-dd hh24:mi:ss') from al

具體用法和上面的 to_char 差不多。

4.TO_NUMBER
使用TO_NUMBER函數將字元轉換為數字
TO_NUMBER(char[, '格式'])

數字格式格式
9 代表一個數字
0 強制顯示0
$ 放置一個$符
L 放置一個浮動本地貨幣符
. 顯示小數點
, 顯示千位指示符

oracle中的to_date參數含義

1.日期格式參數含義說明
D 一周中的星期幾
DAY 天的名字,使用空格填充到9個字元
DD 月中的第幾天
DDD 年中的第幾天
DY 天的簡寫名
IW ISO標準的年中的第幾周
IYYY ISO標準的四位年份
YYYY 四位年份
YYY,YY,Y 年份的最後三位,兩位,一位
HH 小時,按12小時計
HH24 小時,按24小時計
MI 分
SS 秒
MM 月
Mon 月份的簡寫
Month 月份的全名
W 該月的第幾個星期
WW 年中的第幾個星期 1.日期時間間隔操作
當前時間減去7分鍾的時間
select sysdate,sysdate - interval 』7』 MINUTE from al
當前時間減去7小時的時間
select sysdate - interval 』7』 hour from al
當前時間減去7天的時間
select sysdate - interval 』7』 day from al
當前時間減去7月的時間
select sysdate,sysdate - interval 』7』 month from al
當前時間減去7年的時間
select sysdate,sysdate - interval 』7』 year from al
時間間隔乘以一個數字
select sysdate,sysdate - 8 *interval 』2』 hour from al
2.日期到字元操作
select sysdate,to_char(sysdate,』yyyy-mm-dd hh24:mi:ss』) from al
select sysdate,to_char(sysdate,』yyyy-mm-dd hh:mi:ss』) from al
select sysdate,to_char(sysdate,』yyyy-ddd hh:mi:ss』) from al
select sysdate,to_char(sysdate,』yyyy-mm iw-d hh:mi:ss』) from al
參考oracle的相關關文檔(ORACLE901DOC/SERVER.901/A90125/SQL_ELEMENTS4.HTM#48515)
3. 字元到日期操作
select to_date(』2003-10-17 21:15:37』,』yyyy-mm-dd hh24:mi:ss』) from al
具體用法和上面的to_char差不多。
4. trunk/ ROUND函數的使用
select trunc(sysdate ,』YEAR』) from al
select trunc(sysdate ) from al
select to_char(trunc(sysdate ,』YYYY』),』YYYY』) from al
5.oracle有毫秒級的數據類型
--返回當前時間 年月日小時分秒毫秒
select to_char(current_timestamp(5),』DD-MON-YYYY HH24:MI:SSxFF』) from al;
--返回當前時間的秒毫秒,可以指定秒後面的精度(最大=9)
select to_char(current_timestamp(9),』MI:SSxFF』) from al;
6.計算程序運行的時間(ms)
declare
type rc is ref cursor;
l_rc rc;
l_mmy all_objects.object_name%type;
l_start number default dbms_utility.get_time;
begin
for I in 1 .. 1000 loop
open l_rc for 'select object_name from all_objects '|| 'where object_id = ' || i;
fetch l_rc into l_mmy;
close l_rc;
end loop;
dbms_output.put_line ( round( (dbms_utility.get_time-l_start)/100, 2 ) ||' seconds ...' );
end;

⑧ SQL資料庫時間差

先給此表增加一個數字類型的列「Diff」,然執行如下sql語句:
update
[表名]
set
[diff]=datediff(day,[A日期列],[B日期列])
datediff函數的第一個參數設置為day時,計算的是兩個日期以天為單位的差數,設置為month、year時以此類推。

⑨ sql求時間差,精確到秒分時

多行記錄做這樣的時間差值計算思路:

  1. 要將簽入和簽出配對處理,然後才能求出時間差值

  2. 或使用隱式游標進行處理,可以求出上一行記錄和下一行記錄的時間差值,但SQL語句極其晦澀難懂。

SQL計算秒的差值為:

selectdatediff(ss,'2019-01-0102:03:04',getdate())