如何得到2个日期(smalldateTime)间隔天数??神仙来帮我啊 datediff( day,'2008-11-01 10:37:00 ','2008-11-01 11:39:00 ') 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 declare @dt1 datetime,@dt2 datetime,@dt3 datetime,@dt4 datetimeselect @dt1='2008-11-01 10:37:00 ',@dt2=' 2008-11-01 11:39:00 ', @dt3='2008-11-02 2:00:00 ',@dt4='2008-11-02 11:23:00'select datediff(day,@dt1,@dt2)+1select datediff(day,@dt1,@dt3)+1select datediff(day,@dt1,@dt4)+1结果依次为:123 哦,不好意思,又写错了。应该判断到小时上面declare @dt1 datetime,@dt2 datetime,@dt3 datetime,@dt4 datetimeselect @dt1='2008-11-01 10:37:00 ',@dt2=' 2008-11-01 11:39:00 ', @dt3='2008-11-02 2:00:00 ',@dt4='2008-11-02 11:23:00'if datediff(hh,@dt1,@dt2)<24 print '一天'else print '两天'if datediff(hh,@dt1,@dt3)<24 print '一天'else print '两天'if datediff(hh,@dt1,@dt4)<24 print '一天'else print '两天' 我想肯定用datediff()函数select datediff(day,date1,date2) datediff( h,'2008-11-01 10:37:00 ','2008-11-01 11:39:00 ')/24 declare @dt1 datetime,@dt2 datetime,@dt3 datetime,@dt4 datetime select @dt1='2008-11-01 10:37:00 ',@dt2=' 2008-11-01 11:39:00 ', @dt3='2008-11-02 2:00:00 ',@dt4='2008-11-02 11:23:00' --一天是43200秒select ceiling( CAST(datediff( s, @dt1, @dt2 ) as decimal(18,2)) / 43200 ), ceiling( CAST(datediff( s, @dt1, @dt3 ) as decimal(18,2)) / 43200 ), ceiling( CAST(datediff( s, @dt1, @dt4 ) as decimal(18,2)) / 43200 )--结果/* -------------------------- -------------------------- -------------------------- 1 2 3*/使用秒来判断是比较准确的。 ......select 24 * 60 * 60/**86400**/ 按照楼主的需求,精确到分,实际上2008-11-01 10:37:002008-11-02 11:39:00是应该得到2天但是:select datediff(hh,'2008-11-01 10:37:00 ','2008-11-02 11:39:00 ')/24/**1**/我想我的理解应该没有错吧。 嘿嘿,select datediff( mi,'2008-11-01 10:37:00 ','2008-11-02 11:39:00 ')/(24*60) select ceiling(datediff(hh,'2008-11-01 10:37:00 ','2008-11-02 11:39:00 ')*1./24) declare @dt1 datetime,@dt2 datetime,@dt3 datetime,@dt4 datetime select @dt1='2008-11-01 10:37:00 ',@dt2=' 2008-11-01 11:39:00 ', @dt3='2008-11-02 2:00:00 ',@dt4='2008-11-02 11:23:00' select ceiling( CAST(datediff( mi, @dt1, @dt2 ) as decimal(18,2)) / (24 * 60) ), ceiling( CAST(datediff( mi, @dt1, @dt3 ) as decimal(18,2)) / (24 * 60) ), ceiling( CAST(datediff( mi, @dt1, @dt4 ) as decimal(18,2)) / (24 * 60) )--结果/* ------------------------------- ------------------------------- ------------------------------- 1 1 2*/出笑话了 declare @T table(Date datetime)insert @T select '2008-11-01 11:39:00'insert @T select '2008-11-02 2:00:00'insert @T select '2008-11-02 11:23:00'declare @beginTime datetimeset @beginTime='2008-11-01 10:37:00'select [Day]=case when Dateadd(d,datediff(d,@beginTime,Date),@beginTime)<=Date then datediff(d,@beginTime,Date)+1 else datediff(d,@beginTime,Date) endfrom @T(1 行受影响)Day-----------112(3 行受影响) declare @dt1 datetime,@dt2 datetimeselect @dt1='2008-11-01 10:37:00 ',@dt2=' 2008-11-04 11:39:00 'select datediff(hh,@dt1,@dt2)/24+1 declare @dt1 datetime,@dt2 datetime,@dt3 datetime,@dt4 datetimeselect @dt1='2008-11-01 10:37:00 ',@dt2=' 2008-11-01 10:39:00 ',@dt3='2008-11-02 2:00:00 ',@dt4=' 2008-11-02 11:23:00 'select datediff(hh,@dt1,@dt2)/24+1 select datediff(hh,@dt1,@dt3)/24+1 select datediff(hh,@dt1,@dt4)/24+1 呵呵,用它测试吧,我刚测试完的,完全满足,其实只要计算到小时就可以了 非常感谢大家 我最后采用的方法是select datediff( mi,'2008-11-01 10:37:00 ','2008-11-02 11:39:00 ')/(24*60)+1求出总的间隔分钟 然后求商得天数再+1 一条SQL语句 在查询语句中,可不可以不引用列名称,直接引用列序号来取得字段值? 我想如何显示关联四个表opp_dn相同字段值之间关联度大于2的结果集 大数据操作的问题? SQL Server出现置疑的问题 从Excel导入到sql时,数字类型为什么变成了null ? 怎样取得这个表中的其余记录啊? 如何写sql语句?回答有分!!!!! a表字段为num,num为(1-10的正整数),写一个查询,随机从a表提取N个数据行,其num和为m 如何把表A的结构复制给表B? 求救,关于SQL Server 2005 Express的安装问题. 请问一条SQL语句如何写,困扰了我好几天,在线等!谢谢
@dt3='2008-11-02 2:00:00 ',@dt4='2008-11-02 11:23:00'
select datediff(day,@dt1,@dt2)+1
select datediff(day,@dt1,@dt3)+1
select datediff(day,@dt1,@dt4)+1结果依次为:
1
2
3
@dt3='2008-11-02 2:00:00 ',@dt4='2008-11-02 11:23:00'
if datediff(hh,@dt1,@dt2)<24
print '一天'
else
print '两天'
if datediff(hh,@dt1,@dt3)<24
print '一天'
else
print '两天'
if datediff(hh,@dt1,@dt4)<24
print '一天'
else
print '两天'
select datediff(day,date1,date2)
declare @dt1 datetime,@dt2 datetime,@dt3 datetime,@dt4 datetime select @dt1='2008-11-01 10:37:00 ',@dt2=' 2008-11-01 11:39:00 ',
@dt3='2008-11-02 2:00:00 ',@dt4='2008-11-02 11:23:00' --一天是43200秒
select ceiling( CAST(datediff( s, @dt1, @dt2 ) as decimal(18,2)) / 43200 ),
ceiling( CAST(datediff( s, @dt1, @dt3 ) as decimal(18,2)) / 43200 ),
ceiling( CAST(datediff( s, @dt1, @dt4 ) as decimal(18,2)) / 43200 )
--结果
/*
-------------------------- -------------------------- --------------------------
1 2 3
*/使用秒来判断是比较准确的。
86400
**/
2008-11-01 10:37:00
2008-11-02 11:39:00
是应该得到2天但是:
select datediff(hh,'2008-11-01 10:37:00 ','2008-11-02 11:39:00 ')/24/**
1
**/我想我的理解应该没有错吧。
嘿嘿,select datediff( mi,'2008-11-01 10:37:00 ','2008-11-02 11:39:00 ')/(24*60)
select ceiling(datediff(hh,'2008-11-01 10:37:00 ','2008-11-02 11:39:00 ')*1./24)
@dt3='2008-11-02 2:00:00 ',@dt4='2008-11-02 11:23:00'
select ceiling( CAST(datediff( mi, @dt1, @dt2 ) as decimal(18,2)) / (24 * 60) ),
ceiling( CAST(datediff( mi, @dt1, @dt3 ) as decimal(18,2)) / (24 * 60) ),
ceiling( CAST(datediff( mi, @dt1, @dt4 ) as decimal(18,2)) / (24 * 60) )
--结果
/*
------------------------------- ------------------------------- -------------------------------
1 1 2*/
出笑话了
insert @T select '2008-11-01 11:39:00'
insert @T select '2008-11-02 2:00:00'
insert @T select '2008-11-02 11:23:00'declare @beginTime datetime
set @beginTime='2008-11-01 10:37:00'select
[Day]=case when Dateadd(d,datediff(d,@beginTime,Date),@beginTime)<=Date then datediff(d,@beginTime,Date)+1 else datediff(d,@beginTime,Date) end
from
@T
(1 行受影响)
Day
-----------
1
1
2(3 行受影响)
select @dt1='2008-11-01 10:37:00 ',@dt2=' 2008-11-04 11:39:00 '
select datediff(hh,@dt1,@dt2)/24+1
select @dt1='2008-11-01 10:37:00 ',@dt2=' 2008-11-01 10:39:00 ',@dt3='2008-11-02 2:00:00 ',@dt4=' 2008-11-02 11:23:00 '
select datediff(hh,@dt1,@dt2)/24+1
select datediff(hh,@dt1,@dt3)/24+1
select datediff(hh,@dt1,@dt4)/24+1 呵呵,用它测试吧,我刚测试完的,完全满足,其实只要计算到小时就可以了
求出总的间隔分钟 然后求商得天数再+1