‘壹’ 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 行受影响)