Sql 存取减法时间
如何在Access表中减去两次 查询必须自动完成。我需要减去到达时的剩余时间,这样我就能得到工作时间: 查询必须填入表中的小时数列,这样我就可以在c#程序中得到它 [左]-[到达] 日期差异 DateDiff(间隔、日期1、日期2、[firstdayofweek]、[firstweekofyear])Sql 存取减法时间,sql,ms-access,datetime,ms-access-2007,Sql,Ms Access,Datetime,Ms Access 2007,如何在Access表中减去两次 查询必须自动完成。我需要减去到达时的剩余时间,这样我就能得到工作时间: 查询必须填入表中的小时数列,这样我就可以在c#程序中得到它 [左]-[到达] 日期差异 DateDiff(间隔、日期1、日期2、[firstdayofweek]、[firstweekofyear]) DateDiff(“h”,[到达],[左])在access中,如果字段是日期/时间类型,则只需将其减记并根据需要格式化输出即可。减法的结果是天数和天数的分数。如果你想要以小时为单位,只需乘以24
DateDiff(“h”,[到达],[左])在access中,如果字段是日期/时间类型,则只需将其减记并根据需要格式化输出即可。减法的结果是天数和天数的分数。如果你想要以小时为单位,只需乘以24,就可以得到,小时数和小时数
SELECT cdbl([Left] - [Arrived]) * 24 as worked_hours FROM yourtable
正如Russell提到的,使用
DateDiff
函数。我在一个测试MsAccess数据库上进行了测试,它可以正常工作。以下是我的选择声明:
SELECT DateDiff('n',[Arrived],[Left])/60 AS Worked,
DateDiff('s',[Arrived],[Left])/3600 AS Worked2,
*
FROM Table1;
样本结果:
Worked Worked2 Left Arrived
1 0.999722222222222 4/9/2013 3:00:00 PM 4/9/2013 2:00:01 PM
0.833333333333333 0.833055555555556 4/9/2013 3:00:00 PM 4/9/2013 2:10:01 PM
1.66666666666667E-02 2.77777777777778E-04 4/9/2013 3:00:00 PM 4/9/2013 2:59:59 PM
24 23.9997222222222 4/9/2013 3:00:00 PM 4/8/2013 3:00:01 PM
正如您所见,Worked2方法(按秒计算)更精确。而
DateDiff
是一个很好的函数,我更喜欢它,因为DateDiff
会缩短您的工作时间。我相信OP的员工会喜欢在7:59工作时被计算为7小时。如果使用秒,DateDiff不会截断小时。请看我的帖子。但这也可以。如果要通过表值(而不是查询)执行此操作,则不能使用默认值。必须使用计算列。您最好使用查询。我认为要求不够严格,但我已经更新了我的帖子以适应这一点。感谢您提供的解决方案(所有解决方案都很好),但是我怎样才能使access自动计算并在小时列中显示它呢?我不理解你的新查询:你想用计算结果更新同一个表上的字段吗?“在小时栏中显示”是什么意思?是的,我想更新“小时”。“小时”必须是工作时间。它必须自动更新(计算“左”-“到达”),最好的解决方案是删除该字段并提供所有计算结果,以避免冗余。但是如果您想要更新,您可以这样做:updateyourtable SET hours=cdbl([Left]-[arrized])*24
和可选的where子句where hours为null
或其他一些操作。因此,您应该注意,这种方法不知道夏令时的变化。如果您的员工通宵工作,或者在清晨工作,并且您所在的时区有DST,那么一年两次,您可能会少付或多付员工一小时的工资。