首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何计算开始时间和结束时间之间的总分钟数?

如何计算开始时间和结束时间之间的总分钟数?
EN

Stack Overflow用户
提问于 2014-08-22 19:57:27
回答 2查看 33.5K关注 0票数 11

如何计算开始时间和结束时间之间的总分钟数?开始/结束时间列是nvarchar,我将它们声明为datetime。我不确定这是否是我的第一步,我是SQL和声明的新手。

最终目标是用Total Minutes减去LunchRecess (都是分钟),然后乘以5,得到每个学校一周的总教学分钟数。

代码语言:javascript
复制
DECLARE @StartTime datetime,  @Endtime datetime

SELECT --[School]
      [GradeLevel]
      ,[StartTime]
      ,[EndTime]
      ,(@Endtime - @StartTime) AS 'TotalMinutes'
      ,[Lunch]
      ,[Resess]
      ,[Passing]
  FROM [dbo].[StartEndTimes]


Current Output:
GradeLevel  StartTime   EndTime   TotalMinutes    Lunch   Resess    Passing
 2-5         7:50        14:20      NULL            20      10       NULL
 K-5         7:45        14:20      NULL            20      10       NULL
 K-5         7:50        14:20      NULL            20      10       NULL
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-08-22 20:11:11

也许这样的东西就是你想要的?

代码语言:javascript
复制
select (datediff(minute, starttime, endtime) -lunch -recess) * 5 AS TotalInstruct
from YourTable

如果您想对所有行进行求和,请尝试:

代码语言:javascript
复制
select sum((datediff(minute, starttime, endtime) -lunch -recess) * 5) AS TotalInstruct
from YourTable

如果想要获取每个学校的学时数,则必须在查询中包含school字段,并在group by子句中使用它,然后查询将变为:

代码语言:javascript
复制
select school, sum((datediff(minute, starttime, endtime) -lunch -recess) * 5) AS TotalInstruct
from YourTable
group by school

以上查询的Sample SQL Fiddle

票数 19
EN

Stack Overflow用户

发布于 2014-08-22 20:11:04

如果您只想找出两个日期之间的差异,那么可以使用DATEDIFF函数(http://msdn.microsoft.com/en-us/library/ms189794.aspx)

示例:

代码语言:javascript
复制
DECLARE @startdate datetime2
SET @startdate = '2007-05-05 12:10:09.3312722';
DECLARE @enddate datetime2 = '2007-05-04 12:10:09.3312722'; 
SELECT DATEDIFF(MINUTE, @enddate, @startdate);

但是,如果您的值是字符串格式,则需要在将它们传递给DATEDIFF函数之前对其进行转换。示例:

代码语言:javascript
复制
DECLARE @starttexttime nvarchar(100)
SET @starttexttime = '7:50'
DECLARE @starttime datetime2
SET @starttime = CONVERT(datetime2, @starttexttime, 0)

DECLARE @endtexttime nvarchar(100)
SET @endtexttime = '17:50'
DECLARE @endtime datetime2
SET @endtime = CONVERT(datetime2, @endtexttime, 0)

SELECT DATEDIFF(MINUTE, @starttime, @endtime);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25446484

复制
相关文章

相似问题

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