『壹』 sql 時間相減,精確到小時
可以通過datediff函數進行時間差:
sql :select datediff(hh,'2012-12-11 8:00:00','2012-12-11 09:31:47') from al ;
語法:
DATEDIFF ( datepart , startdate , enddate )
datepart 縮寫
year yy, yyyy
quarter qq, q
month mm, m
dayofyear dy, y
day dd, d
week wk, ww
hour hh
minute mi, n
second ss, s
millisecond ms
microsecond mcs
nanosecond ns
『貳』 SQL語句中時間差小於48小時怎麼寫啊
如果你的logtime欄位只有日期,沒有時間的話,就沒有辦法了,如果有時間,可以使用
select msisdn from tablename
where datediff(hh,logtime,getdate())<=48
我寫的是SQL Server的,如果是Oracle,試一下
trunc(24*(sysdate-logtime))<=48作為條件, Oracle沒怎麼用過,只是了解過
『叄』 請問mysql的sql中如何計算兩個datetime的差,精確到小時,謝謝
TIMESTAMPDIFF(interval,datetime_expr1,datetime_expr2)
返回日期或日期時間表達式datetime_expr1和datetime_expr2the之間的整數差。
其結果的單位由interval參數給出。該參數必須是以下值的其中一個:
FRAC_SECOND表示間隔是毫秒
SECOND秒
MINUTE分鍾
HOUR小時
DAY天
WEEK星期
MONTH月
QUARTER季度
YEAR年SELECT'年'AS`日期部分`,TIMESTAMPDIFF(YEAR,'2012-12-21',CURRENT_TIMESTAMP())AS`數值`
UNIONALL
SELECT'季度'AS`日期部分`,TIMESTAMPDIFF(QUARTER,'2012-12-21',CURRENT_TIMESTAMP())AS`數值`
UNIONALL
SELECT'月'AS`日期部分`,TIMESTAMPDIFF(MONTH,'2012-12-21',CURRENT_TIMESTAMP())AS`數值`
UNIONALL
SELECT'日'AS`日期部分`,TIMESTAMPDIFF(DAY,'2012-12-21',CURRENT_TIMESTAMP())AS`數值`
UNIONALL
SELECT'周'AS`日期部分`,TIMESTAMPDIFF(WEEK,'2012-12-21',CURRENT_TIMESTAMP())AS`數值`
UNIONALL
SELECT'時'AS`日期部分`,TIMESTAMPDIFF(HOUR,'2012-12-21',CURRENT_TIMESTAMP())AS`數值`
UNIONALL
SELECT'分'AS`日期部分`,TIMESTAMPDIFF(MINUTE,'2012-12-21',CURRENT_TIMESTAMP())AS`數值`
UNIONALL
SELECT'秒'AS`日期部分`,TIMESTAMPDIFF(SECOND,'2012-12-21',CURRENT_TIMESTAMP())AS`數值`
;
+----------+----------+
|日期部分|數值|
+----------+----------+
|年|1|
|季度|4|
|月|12|
|日|388|
|周|55|
|時|9328|
|分|559737|
|秒|33584279|
+----------+----------+
8rowsinset(0.00sec)
mysql>selectCURRENT_TIMESTAMP();
+---------------------+
|CURRENT_TIMESTAMP()|
+---------------------+
|2014-01-1316:58:17|
+---------------------+
1rowinset(0.00sec)
『肆』 Sql 計算時間差
ASP日期函數
作者:未知 來源:未知 發表時間:115038-11-10 編輯:林燦聲 人氣: 129
Date 函數
描述:返回當前系統日期。
語法:Date
DateAdd 函數
描述:返回已添加指定時間間隔的日期。
語法:DateAdd(interval, number, date)
interval: 必選。字元串表達式,表示要添加的時間間隔。有關數值,請參閱「設置」部分。
number: 必選。數值表達式,表示要添加的時間間隔的個數。數值表達式可以是正數(得到未來的日期)或負數(得到過去的日期)。
date: 必選。Variant 或要添加 interval 的表示日期的文字。
interval 參數可以有以下值:
yyyy (年) 、q (季度) 、m (月) 、y (一年的日數) 、d (日) 、w (一周的日數) 、ww (周) 、h (小時) 、n (分鍾) 、s (秒)
說明:可用 DateAdd 函數從日期中添加或減去指定時間間隔。例如可以使用 DateAdd 從當天算起 30 天以後的日期或從現在算起 45 分鍾以後的時間。要向 date 添加以「日」為單位的時間間隔,可以使用「一年的日數」(「y」)、「日」(「d」)或「一周的日數」(「w」)。
DateAdd 函數不會返回無效日期。如下示例將 95 年 1 月 31 日加上一個月:
NewDate = DateAdd("m", 1, "31-Jan-95")
在這個例子中,DateAdd 返回 95 年 2 月 28 日,而不是 95 年 2 月 31 日。如果 date 為 96 年 1 月 31 日,則返回 96 年 2 月 29 日,這是因為 1996 是閏年。
如果計算的日期是在公元 100 年之前則會產生錯誤。
如果 number 不是 Long 型值,則在計算前四捨五入為最接近的整數。
DateDiff 函數
描述:返回兩個日期之間的時間間隔。
語法:DateDiff(interval, date1, date2 [,firstdayofweek[, firstweekofyear>)
interval: 必選。字元串表達式,表示用於計算 date1 和 date2 之間的時間間隔。有關數值,請參閱「設置」部分。
date1, date2: 必選。日期表達式。用於計算的兩個日期。
firstdayofweek: 可選。指定星期中第一天的常數。如果沒有指定,則默認為星期日。有關數值,請參閱「設置」部分。
firstweekofyear: 可選。指定一年中第一周的常數。如果沒有指定,則默認為 1 月 1 日所在的星期。有關數值,請參閱「設置」部分。
interval 參數可以有以下值:
yyyy (年) 、q (季度) 、m (月) 、y (一年的日數) 、d (日) 、w (一周的日數) 、ww (周) 、h (小時) 、n (分鍾) 、s (秒)
firstdayofweek 參數可以有以下值:
(以下分別為:常數 值 描述)
vbUseSystem 0 使用區域語言支持 (NLS) API 設置。
vbSunday 1 星期日(默認)
vbMonday 2 星期一
vbTuesday 3 星期二
vbWednesday 4 星期三
vbThursday 5 星期四
vbFriday 6 星期五
vbSaturday 7 星期六
firstweekofyear 參數可以有以下值:
(以下分別為:常數 值 描述)
vbUseSystem 0 使用區域語言支持 (NLS) API 設置。
vbFirstJan1 1 由 1 月 1 日所在的星期開始(默認)。
vbFirstFourDays 2 由在新年中至少有四天的第一周開始。
vbFirstFullWeek 3 由在新的一年中第一個完整的周開始。
說明:DateDiff 函數用於判斷在兩個日期之間存在的指定時間間隔的數目。例如可以使用 DateDiff 計算兩個日期相差的天數,或者當天到當年最後一天之間的星期數。
要計算 date1 和 date2 相差的天數,可以使用「一年的日數」(「y」)或「日」(「d」)。當 interval 為「一周的日數」(「w」)時,DateDiff 返回兩個日期之間的星期數。如果 date1 是星期一,則 DateDiff 計算到 date2 之前星期一的數目。此結果包含 date2 而不包含 date1。如果 interval 是「周」(「ww」),則 DateDiff 函數返回日歷表中兩個日期之間的星期數。函數計算 date1 和 date2 之間星期日的數目。如果 date2 是星期日,DateDiff 將計算 date2,但即使 date1 是星期日,也不會計算 date1。
如果 date1 晚於 date2,則 DateDiff 函數返回負數。
firstdayofweek 參數會對使用「w」和「ww」間隔符號的計算產生影響。
如果 date1 或 date2 是日期文字,則指定的年度會成為日期的固定部分。但是如果 date1 或 date2 被包括在引號 (" ") 中並且省略年份,則在代碼中每次計算 date1 或 date2 表達式時,將插入當前年份。這樣就可以編寫適用於不同年份的程序代碼。
在 interval 為「年」(「yyyy」)時,比較 12 月 31 日和來年的 1 月 1 日,雖然實際上只相差一天,DateDiff 返回 1 表示相差一個年份。
DatePart 函數
描述:返回給定日期的指定部分。
語法:DatePart(interval, date[, firstdayofweek[, firstweekofyear>)
DatePart: 函數的語法有以下參數:
interval: 必選。字元串表達式,表示要返回的時間間隔。有關數值,請參閱「設置」部分。
date: 必選。要計算的日期表達式。
firstdayof week: 可選。指定星期中的第一天的常數。如果沒有指定,則默認為星期日。有關數值,請參閱「設置」部分。
firstweekofyear: 可選。指定一年中第一周的常數。如果沒有指定,則默認為 1 月 1 日所在的星期。有關數值,請參閱「設置」部分。
interval 參數可以有以下值:
yyyy (年) 、q (季度) 、m (月) 、y (一年的日數) 、d (日) 、w (一周的日數) 、ww (周) 、h (小時) 、n (分鍾) 、s (秒)
firstdayofweek 參數可以有以下值:
(以下分別為:常數 值 描述)
vbUseSystem 0 使用區域語言支持 (NLS) API 設置。
vbSunday 1 星期日(默認)
vbMonday 2 星期一
vbTuesday 3 星期二
vbWednesday 4 星期三
vbThursday 5 星期四
vbFriday 6 星期五
vbSaturday 7 星期六
firstweekofyear 參數可以有以下值:
(以下分別為:常數 值 描述)
vbUseSystem 0 使用區域語言支持 (NLS) API 設置。
vbFirstJan1 1 由 1 月 1 日所在的星期開始(默認)。
vbFirstFourDays 2 由在新年中至少有四天的第一周開始。
vbFirstFullWeek 3 由在新的一年中第一個完整的周(不跨年度)開始。
說明:DatePart 函數用於計算日期並返回指定的時間間隔。例如使用 DatePart 計算某一天是星期幾或當前的時間。
firstdayofweek 參數會影響使用「w」和「ww」間隔符號的計算。
如果 date 是日期文字,則指定的年度會成為日期的固定部分。但是如果 date 被包含在引號 (" ") 中,並且省略年份,則在代碼中每次計算 date 表達式時,將插入當前年份。這樣就可以編寫適用於不同年份的程序代碼
『伍』 sql怎麼計算時間差
DATEDIFF(mi,開始時間,結束時間)
這個函數可以算出會話時間,mi代表分鍾,
1。兩張表匹配下,sum(算出的會話時間)即可
2.select
訪問客戶,sum(算出的會話時間)
from
...
group
by
訪問客戶
3.用agv(算出的會話時間)
即可
4.select
訪問客戶,agv(算出的會話時間)
from
...
group
by
訪問客戶
『陸』 查詢兩個日期的時間差(精確到小時),同時剔除日期之間的周六周日,SQL語句怎麼寫
先創建一個函數計算時間差
Alter function dbo.fn_test(@begin datetime,@end datetime)
returns int
As
BEGIN
declare @i int,@j int
set @i=0
set @j=0
if @end<@begin
begin
declare @t datetime
set @t=@end
set @end=@begin
set @begin=@t
end
while dateadd(hh,@i,@begin) <@end
begin
if datepart(weekday,dateadd(hh,@i,@begin)) not in(1,7)
set @j=@j+1
set @i=@i+1
end
return @j
end
調用函數
select dbo.fn_test(@begin,@end)
『柒』 sql求時間差,精確到秒分時
多行記錄做這樣的時間差值計算思路:
要將簽入和簽出配對處理,然後才能求出時間差值
或使用隱式游標進行處理,可以求出上一行記錄和下一行記錄的時間差值,但SQL語句極其晦澀難懂。
SQL計算秒的差值為:
selectdatediff(ss,'2019-01-0102:03:04',getdate())
『捌』 sql時間差的計算
這是ORACLE是SQL2000的?
給個ORACLE的例子:
select floor(to_number(to_date(20110621100000,'yyyymmdd hh24:mi:ss')-to_date(20110621095505,'yyyymmdd hh24:mi:ss'))*24*60) from al;
『玖』 SQL 計算時間差問題,要精確到天小時分鍾.
什麼資料庫啊?
sqlserver
selectcast(floor(datediff(minute,時間1,時間2)/1440)asvarchar)+'天'+
cast(floor((datediff(minute,時間1,時間2)%1440)/60)asvarchar)+'小時'+
cast(((datediff(minute,時間1,時間2))-
(floor(datediff(minute,時間1,時間2)/1440)*1440)-
(floor((datediff(minute,時間1,時間2)%1440)/60)*60))asvarchar)+'分'
from表名
剛才測試了一下:結果如下
有問題歡迎追問
『拾』 sql 計算時間差得到時分秒。
declare @starttime as datetime
declare @endtime as datetime
set @starttime = '2009-11-21 00:00:00'
set @endtime = '2009-11-24 15:12:24'select right('00'+ cast(cast(datediff(ss ,@starttime,@endtime) / 3600 as int) as varchar),2) + ':' +
right('00'+ cast(cast(datediff(ss ,@starttime,@endtime) % 3600 / 60 as int) as varchar),2) + ':' +
right('00'+ cast(cast(datediff(ss ,@starttime,@endtime) % 60 as int) as varchar),2) as 時間差
時間差
--------------
87:12:24(1 行受影響)