首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL全天差异

SQL全天差异
EN

Stack Overflow用户
提问于 2010-07-08 23:45:13
回答 4查看 162关注 0票数 1

有没有人知道如何在两天之间获得全天的数据差异。

即时消息当前正在使用

代码语言:javascript
复制
datediff(day,createddate,dateserved) 

但是需要返回多少完整的天数?

i.e

代码语言:javascript
复制
Created    =   1/7/2010 2100
dateserved =   2/7/2010 2000

目前,日期差异将显示1天,但我需要它显示0,直到日期保存超过2100

任何想法Sp

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-07-08 23:55:41

@Ian Jacobs首先获得了它,但我在T-SQL中是如何做到这一点的。假设你只关心小时数:

代码语言:javascript
复制
DECLARE
  @From  datetime
 ,@Thru  datetime

SET @From = 'Jan 1, 2010 21:00'
SET @Thru = 'Jan 3, 2010 20:00' -- 2/7/2010 2000

print datediff(dd, @From, @Thru)
print datediff(hh, @From, @Thru)
PRINT datediff(hh, @From, @Thru) / 24

...that是,计算日期时间之间的小时差,除以24,并截断十进制值。SQL看起来是截断的,但如果您是偏执狂,请使用

代码语言:javascript
复制
print datediff(hh, @From, @Thru) / 24.0
PRINT floor(datediff(hh, @From, @Thru) / 24.0)

以确保正确的截断。如果您需要精确到分钟、秒或毫秒,则添加更多的算术运算。

票数 2
EN

Stack Overflow用户

发布于 2010-07-08 23:54:38

代码语言:javascript
复制
 SELECT FLOOR(CAST(dateserved AS FLOAT) - CAST( createddate AS FLOAT))

另外,下面的代码看起来很有效,也更简洁,但可能需要一些测试

代码语言:javascript
复制
SELECT FLOOR(CAST(dateserved-createddate AS FLOAT))
票数 3
EN

Stack Overflow用户

发布于 2010-07-08 23:51:54

您所能做的就是在DATEDIFF()函数中使用尽可能小的分辨率(分钟、秒等等)。然后用数学将其转换为一天的表示。

我基本上是在提议:

代码语言:javascript
复制
Floor(DATEDIFF(mi, createddate, dateserved)/60/24);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3205417

复制
相关文章

相似问题

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