❶ sql计算时间差的datediff函数怎么用
简单介绍一下datediff()函数。
定义和用法
DATEDIFF() 函数返回两个日期之间的天数。
语法
DATEDIFF(datepart,startdate,enddate)
startdate 和 enddate 参数是合法的日期表达式。
datepart 参数可以是下列的值:
计算相差的天数:
select DATEDIFF(DAY,'2013-10-12 10:25:52.400','2013-10-19 00:25:52.400') as '时间差'
备注:更改日期后面的时间不影响相差天数的输出结果
计算相差的小时数:
select DATEDIFF(HOUR,'2013-10-12 10:25:52.400','2013-10-12 23:25:53.400') as '时间差'
备注:分钟的改变不能影响计算结果
❷ 在Sql语句中怎样计算出两个日期的差值
sql语句中计算两个日期的差值用datediff函数。
工具:sqlserver 2008 R2
步骤:
1、计算2009-06-23与2009-06-17之间的天数。语句如下:
selectdatediff(d,'2009-06-17','2009-06-23')
2、查询结果:
❸ 查询两个日期的时间差(精确到小时),同时剔除日期之间的周六周日,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怎么计算时间差
返回跨两个指定日期的日期和时间边界数。
语法
DATEDIFF(datepart,startdate,enddate)
参数
datepart
❺ 关于SQL两个时间计算出间隔时间的问题。
declare@DMtimeint
declare@Dvarchar(10)
declare@Hvarchar(10)
declare@Mvarchar(10)
declare@Svarchar(10)
set@DMtime=DATEDIFF(SECOND,'2013-08-2016:40:23','2013-08-2416:05:05')
--获取两个时间段的秒的相差值
set@D=@DMtime/(3600*24)--天数
set@H=(@DMtime-@D*3600*24)/3600--小时
set@M=(@DMtime-@D*3600*24-@H*3600)/60--分钟
set@S=@DMtime-@D*3600*24-@H*3600-@M*60--秒
select@D+N'天
小时
分钟
秒'
效果图如下:
❻ SQL 计算时间差问题,要精确到天小时分钟.
select
datediff(day,GETDATE(),getdate())--天数差
select
DATEDIFF
(HOUR,GETDATE()-2,getdate())
--小时差
值/24,就是天
select
DATEDIFF
(MINUTE,GETDATE()-2,getdate())
--俩个日期的分钟差,值/24,天数差,余值/60,小时差,余数为分钟。
❼ 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表名
刚才测试了一下:结果如下
有问题欢迎追问
❽ 请问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计算时间差的datediff函数怎么用
简单介绍一下datediff()函数。
定义和用法
DATEDIFF()
函数返回两个日期之间的天数。
语法
DATEDIFF(datepart,startdate,enddate)
startdate
和
enddate
参数是合法的日期表达式。
datepart
参数可以是下列的值:
计算相差的天数:
select
DATEDIFF(DAY,'2013-10-12
10:25:52.400','2013-10-19
00:25:52.400')
as
'时间差'
备注:更改日期后面的时间不影响相差天数的输出结果
计算相差的小时数:
select
DATEDIFF(HOUR,'2013-10-12
10:25:52.400','2013-10-12
23:25:53.400')
as
'时间差'
备注:分钟的改变不能影响计算结果
❿ 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;