首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Server中实现DateDiff?

如何在Server中实现DateDiff?
EN

Stack Overflow用户
提问于 2010-12-17 05:53:22
回答 3查看 800关注 0票数 2

我在语句中使用了以下代码。

代码语言:javascript
运行
复制
datediff(minute, visit.nexttime, visit.endtime)

结果各不相同。

我会给你们看几个结果。

  • 0:24:26 - 25
  • 0: 32 :14 -32
  • 0:05:12-5
  • 0:06:28 -7
  • 0:03:52-4
  • 0:03:32 -3

第一个,24圈到25圈,而只有26秒。

第二,32仍然是第二个是14。

第三,5仍然是5,很公平。

第四轮,6圈到7圈,只有28秒。

第五圈,3圈,4圈,52秒。

最后一个,3仍然是3,即使有32秒。

为什么会这样呢?

我使用下面的代码获取我的第一列。

代码语言:javascript
运行
复制
CONVERT(varchar(6), datediff(second, visit.nexttime, visit.endtime)/3600)
+ ':' + 
RIGHT('0' + CONVERT(varchar(2), (datediff(second, visit.nexttime, visit.endtime) % 3600) / 60), 2)
+ ':' + 
RIGHT('0' + CONVERT(varchar(2), datediff(second, visit.nexttime, visit.endtime) % 60), 2) 
as 'Transaction Time'
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-12-17 07:30:01

我实际上并不熟悉Server,但是阅读这里文档时,我怀疑我知道为什么您会得到这些结果。

返回值描述如下:

返回在指定的开始日期和结束日期之间交叉的指定日期部分边界的计数(有符号整数)。

因为您为minute指定了datepart,所以我认为这意味着秒被忽略,它只计算startdateenddate之间每分钟变化的次数。

例如:

如果startdateenddate在同一分钟内相隔50秒,它将返回0。

如果startdateenddate相距仅5秒,但在不同的分钟内,它将返回1。

票数 1
EN

Stack Overflow用户

发布于 2010-12-17 07:25:59

Datediff有点奇怪,而且很不直观。从以前的Sybase时代起就这样运作了。

在您的例子中,datediff(m,x,y)完全忽略了秒。

当您试图计算年龄时,您也遇到了同样的问题:

代码语言:javascript
运行
复制
select datediff (y, '2010-12-31', '2011-01-01')

这并不意味着四舍五入的差额大约是一年,它只说明了一个新年的到来。

为了得到你想要的结果,你必须在一个更细粒度的基础上取这个差,就像你用秒做的那样。

票数 1
EN

Stack Overflow用户

发布于 2010-12-17 05:56:41

请参阅MySql文档。它应该为你澄清这一点。

达迪夫

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4468083

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档