Sql 将滴答声转换为分钟

Sql 将滴答声转换为分钟,sql,sql-server,sql-server-2012,Sql,Sql Server,Sql Server 2012,如果可能的话,我正在寻找一种使用SQL将BigInt转换为时间值的方法。在我们的数据库中,我们将TimeSpan.Ticks存储到一列中,我需要知道每个值代表多少时间。例如,3000000000个滴答声等于5分钟。我只需要每个问题的总分钟数。以下是我为获得结果而编写的SQL: SELECT i.IssueID, ia.TimeSpent FROM IssueActivities ia INNER JOIN Issues i ON ia.IssueID = i.IssueID INNER JOI

如果可能的话,我正在寻找一种使用SQL将BigInt转换为时间值的方法。在我们的数据库中,我们将TimeSpan.Ticks存储到一列中,我需要知道每个值代表多少时间。例如,3000000000个滴答声等于5分钟。我只需要每个问题的总分钟数。以下是我为获得结果而编写的SQL:

SELECT i.IssueID, ia.TimeSpent 
FROM IssueActivities ia
INNER JOIN Issues i ON ia.IssueID = i.IssueID
INNER JOIN IssueActivityTypes iat ON ia.IssueActivityTypeID =   iat.IssueActivityTypeID
INNER JOIN AllPOCs apoc ON i.POCID = apoc.AllPOCID
INNER JOIN Users u ON ia.CreatedByUserID = u.UserID
WHERE i.issueid IN (41602, 41908)
AND ia.ActivityDate BETWEEN '03/05/2018 23:59:59' AND '03/06/2019 00:00:01'
ORDER BY ia.IssueID
这是一个结果样本

我试图将TimePent字段强制转换为DateTime CASTia.TimePent-5992660800000000/10000000/24/60/60作为DateTime,但我收到此错误消息算术溢出错误将表达式转换为数据类型DateTime


关于如何获取TimePent字段的分钟值,并在IssueID上对其求和,或在另一列中显示分钟数,然后我可以导出到excel并从中计算出来的任何想法。

如果您只需要转换为分钟数,我不一定理解您为什么要求将结果作为日期时间,但请看一下以下内容:

SELECT  3000000000 / 600000000.0,
        300000000 / 600000000.0,
        DATEADD(MILLISECOND, 3000000000 / 10000.0, 0),
        DATEADD(MILLISECOND, 300000000 / 10000.0, 0)
前两个操作将滴答声转换为保留分数成分的分钟数

第二种方法有效地创建了一个日期时间,其毫秒数与刻度数相对应


您需要考虑是否需要分数输出,以及是否需要它作为DATE时间。< /P> < P>转换为分钟舍入:

SELECT i.IssueID, 
  floor(ia.TimeSpent / 600000000.0 ) as minutes
FROM IssueActivities ia
INNER JOIN Issues i ON ia.IssueID = i.IssueID
INNER JOIN IssueActivityTypes iat ON ia.IssueActivityTypeID =   iat.IssueActivityTypeID
INNER JOIN AllPOCs apoc ON i.POCID = apoc.AllPOCID
INNER JOIN Users u ON ia.CreatedByUserID = u.UserID
WHERE i.issueid IN (41602, 41908)
AND ia.ActivityDate BETWEEN '03/05/2018 23:59:59' AND '03/06/2019 00:00:01'
ORDER BY ia.IssueID

FLOOR函数将浮点值的十进制数字去除。

在大数学中使用浮点,然后从各个部分计算时间来计算时间。您是将分钟值向上取整,还是向下取整,还是将其显示为小数部分?@MartinParkin-我们通常也显示秒数,但出于此目的,四舍五入就足够了。如果3000000000个记号等于5分钟,则600000000=1分钟。除以timespunt/600000000得到分钟值我不需要它作为日期时间,我只需要显示分钟,它们可以向下舍入。