Sql server 2008 Sql和特定时间
我的sql表中有一个varchar类型的列,正在从中收集工作时间。。。 如果我给你这样的工作时间Sql server 2008 Sql和特定时间,sql-server-2008,Sql Server 2008,我的sql表中有一个varchar类型的列,正在从中收集工作时间。。。 如果我给你这样的工作时间 WorkingHours ------------ 1 5 8 我可以找到这个WorkingHours列值的总和,比如sum(WorkingHours),但这里我需要给出更具体的计时,比如 WorkingHours ------------ 01:30 2 01:15 04:45 像这样,是否可以对这些值求和,我尝试了同样的方法,
WorkingHours
------------
1
5
8
我可以找到这个WorkingHours列值的总和,比如sum(WorkingHours)
,但这里我需要给出更具体的计时,比如
WorkingHours
------------
01:30
2
01:15
04:45
像这样,是否可以对这些值求和,我尝试了同样的方法,但我没有找到任何解决方案,这里有人能帮我吗?从表中选择cast(dateadd(毫秒,sum(datediff(毫秒,0,cast(totalhrs as datetime))),0)as time)
这是将精度提高到毫秒的语法
有关详细说明,请参阅。从表中选择转换(日期添加(毫秒,总和(日期差,毫秒,0,转换(总小时为日期时间))),0)作为时间)
这是将精度提高到毫秒的语法
有关详细说明,请参阅。为什么将时间存储为varchar?使用时间或日期时间当然 请注意,“2”,如果可转换,将是48小时或2天。如果您不想修复数据或数据类型,则必须解决此问题
DECLARE @feckedTable TABLE (WorkingHours varchar(5));
INSERT @feckedTable (WorkingHours) VALUES ('01:30'), ('02:00'), ('01:15'), ('04:45');
SELECT
SUM(DATEDIFF(minute, 0, CAST(WorkingHours AS smalldatetime))) AS TotalTime
FROM
@feckedTable
SELECT
CAST(TotalTime/60 AS varchar(4)) + ':' + CAST(TotalTime % 60 AS char(2))
FROM
(
SELECT
SUM(DATEDIFF(minute, 0, CAST(WorkingHours AS smalldatetime))) AS TotalTime
FROM
@feckedTable
) X
为什么将时间存储为varchar?使用时间或日期时间当然 请注意,“2”,如果可转换,将是48小时或2天。如果您不想修复数据或数据类型,则必须解决此问题
DECLARE @feckedTable TABLE (WorkingHours varchar(5));
INSERT @feckedTable (WorkingHours) VALUES ('01:30'), ('02:00'), ('01:15'), ('04:45');
SELECT
SUM(DATEDIFF(minute, 0, CAST(WorkingHours AS smalldatetime))) AS TotalTime
FROM
@feckedTable
SELECT
CAST(TotalTime/60 AS varchar(4)) + ':' + CAST(TotalTime % 60 AS char(2))
FROM
(
SELECT
SUM(DATEDIFF(minute, 0, CAST(WorkingHours AS smalldatetime))) AS TotalTime
FROM
@feckedTable
) X
感谢您的回复,我收到了类似“从字符串转换日期和/或时间时转换失败”的错误。我已经用StackOverflow上的类似问题更新了答案。这里的开始时间和结束时间是什么?感谢您的回复,我收到了类似的错误“从字符串转换日期和/或时间时,转换失败。”我用以前在StackOverflow上提出的类似问题更新了答案。这里的开始时间和结束时间是多少?感谢您的响应gbn,我收到了类似“操作数数据类型smalldatetime对于求和运算符无效”的错误。如果值类似于“2”,我们如何求和?”02:30,“01:20”@Shanish:不要使用“2”。这是有用的感谢您的响应gbn,我收到了类似“操作数数据类型smalldatetime对于求和运算符无效”的错误。如果值像“2”、“02:30”、“01:20”@Shanish:不要使用“2”,我们如何求和?这是有用的