Sql server 2008 将整数转换为时间

Sql server 2008 将整数转换为时间,sql-server-2008,tsql,Sql Server 2008,Tsql,我们有一个数据库,该数据库有一个存储时间表信息的表,包括一个时钟输入和时钟输出列。问题是,创建此表的人将这些属性作为整数而不是时间或日期时间(这也可能是创建时间表的软件强制的)。例如,它不是说8:00:00,而是说480(那一天已经过去的分钟数)。18:00(下午6点)显示1080,午夜是1440,等等 我必须查询该报告,并根据计划的打孔数与实际工作小时数(存储为时间数据类型)进行计算。我试图将select语句中的整数分钟转换为一天中的时间,以便使用CTE进行多次比较。到目前为止,我已经想到了这

我们有一个数据库,该数据库有一个存储时间表信息的表,包括一个时钟输入和时钟输出列。问题是,创建此表的人将这些属性作为整数而不是时间或日期时间(这也可能是创建时间表的软件强制的)。例如,它不是说8:00:00,而是说480(那一天已经过去的分钟数)。18:00(下午6点)显示1080,午夜是1440,等等

我必须查询该报告,并根据计划的打孔数与实际工作小时数(存储为时间数据类型)进行计算。我试图将select语句中的整数分钟转换为一天中的时间,以便使用CTE进行多次比较。到目前为止,我已经想到了这一点(请记住,日程安排是以四分之一小时为增量完成的,因此是.25、.5、.75等等)


我正在尝试使用干净的代码,而不是每次运行报表时都进行太多占用资源的计算。有没有一个更简单的方法来做这一切,难道我还不够开箱思考吗?到目前为止,这是我能想到的实现我所需要的唯一方法,它是一个整数,表示转换为时间戳的经过的时间。任何建议都将不胜感激

您可以创建一个时间,然后使用DATEADD将分钟添加到时间中。因此,在480分钟时,您将其添加到新创建的时间“00:00”,它将在上午8:00离开您

DATEADD(minute, ClockIN, '00:00')

因此,我没有任何理由不能使用另一列存储计划日期,例如:DATEADD(minute、ClockIN、SchdDate)。不过,我遇到的障碍是第二天的午夜记录,因为我们的日程安排是从早上00:01到第二天凌晨12:00。我想我可以做一个案例,检查午夜,如果是午夜,记录日期,如果不是,则进行上述转换。谢谢你的指导!是的,你应该能够使用实时而不仅仅是00:00。祝你好运
DATEADD(minute, ClockIN, '00:00')