sql - 如何使用 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。
有人对此有想法吗?
解决方案
使用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
推荐阅读
- python - 如果第一个元素相同,则添加两个子列表
- elasticsearch - Graylog + Elasticsearch - 如何使用以下模式通过正则表达式查询
- android - 警报对话框未出现在屏幕上
- entity-framework - 如何从 asp.net core web api 获取 JSON 数组作为响应
- reactjs - 我有一个让我发疯的反应问题
- wordpress - 仅在使用 nginx 代理时 Wordpress“建立数据库连接时出错”
- r - 根据列值对构面进行排序
- swift - Swift 命令行工具 -> 使用箭头键和空格键选择
- javascript - 如何同时延迟加载多个组件
- office365 - Office 加载项清单文件通过“npm run validate”但在侧加载到 Office Web 时失败