首页 > 解决方案 > 如何使用 T-SQL 在 SQL server 的两列之间做减号?

问题描述

我在 SQL Server 中有一张名为Employee的表:

Employee   Clock-In                  Clock-Out
111        11/4/2019 2:31:08 PM      11/4/2019 4:31:08 PM
112        11/4/2019 2:31:08 PM      12/4/2019 2:31:08 PM

我希望在这个Employee表中有一个新列,即Duration:(下面是我预期的表)

Employee   Clock-In                  Clock-Out                 Duration(day)
111        11/4/2019 2:31:08 PM      11/4/2019 4:31:08 PM      0
112        11/4/2019 2:31:08 PM      12/4/2019 2:31:08 PM      1
113        13/4/2019 2:31:08 PM                                2

Duration(day)列数据将通过使用时钟输出减去时钟输入列自动计算;但是,如果“打卡”时间为空,则将当前日期时间减去“打卡”列。例如,当前日期时间是 15/4/2019 2:31:08 PM。

有人对此有想法吗?

标签: sqlsql-server

解决方案


使用datediff()coalesce()

select employee,
ClockIn,ClockOut,
datediff(day,ClockIn,coalesce(ClockOut,getdate())) as duration
from table_name

为此,您可以创建如下视图

create view view_name AS
select employee,
ClockIn,ClockOut,
datediff(day,ClockIn,coalesce(ClockOut,getdate())) as duration
from table_name

推荐阅读