sql - 如何计算包括分钟在内的工时?

标签 sql sql-server tsql

我有一个查询,它获取员工的姓名、日期、工作时间、工资并根据工作时间 * 工资计算工资。

正在计算的工作时间分钟数被丢弃。我只在整小时内获得值(value)。快照示例:

我主要关心的是workingHours和wageAmount

alt text

workingHours 显示为 5。这是时间表快照:

alt text

如您所见,类次从上午 10:30 开始,到下午 4:00 结束(不包括午餐时间),因此实际总小时数是 4 小时半而不是 5 小时。

这是计算小时数的查询片段:

   DATEDIFF(HOUR, shiftStart.timeEntered, shiftEnd.timeEntered) - DATEDIFF(HOUR, lunchStart.timeEntered, lunchEnd.timeEntered) AS workingHours, 

我的问题是:

<强>1。如何准确计算包括分钟在内的工作时间(舍弃秒数)?

因为我要计算分钟数,所以我必须计算每分钟的工资,所以我必须输入以下代码来计算每分钟的工资:

              ROUND((((DATEDIFF(HOUR, shiftStart.timeEntered, shiftEnd.timeEntered) - DATEDIFF(HOUR, lunchStart.timeEntered, lunchEnd.timeEntered)) * 60) * (cast(((w.wageAmount/60)-((w.wageAmount/60)%.001)) as decimal (18,3)))), 0) AS "SalaryPerMin",

最佳答案

改为使用 DATEDIFF(minute, shiftStart.timeEntered, shiftEnd.timeEntered) * 1.0/60,以小数形式给出小时。

关于sql - 如何计算包括分钟在内的工时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3895406/

相关文章:

sql - 多列上的 Oracle SQL IN 子句

c# - SSMS 中的 SQL 查询有效但在 C# 中无效

sql-server - Microsoft 集成服务中的脚本组件不读取下划线

sql - 为什么 SUM(COL1 + COL2) 和 SUM(COL1) + SUM(COL2) 会产生不同的结果?

sql - 表变量批量插入的 SQL 语句有什么问题

sql-server - SSIS 中的客户端统计信息

sql - 处理不断变化的 Excel 表结构以导入数据库表

mysql - 搜索相关表中的字段

MySQL 搜索一个字段但删除所有非数字字符

sql - 将阶段标识符分配给启停事件表