C# 计算日期和当前日期之间的差值

C# 计算日期和当前日期之间的差值,c#,sql,datetime,ms-access,datediff,C#,Sql,Datetime,Ms Access,Datediff,我正在用C#创建一个与Microsoft Access数据库接口的程序。我当前的任务是捕获创建条目的日期/时间,计算存储值与当前日期之间的差值,并将其显示在单元格中。我不确定的是,是在C#中进行计算,然后将其存储在数据库中,还是先将信息存储在数据库中,然后使用SQL执行计算 我还需要跟踪一个单位在特定状态代码下被分类的时间。我需要跟踪状态代码更改的日期/时间,并计算状态代码更改日期与当前日期之间的天数差 例如…如果xyz单元是a,其状态代码在3/5更改,当前日期为3/8…我希望它显示它已处于悬而

我正在用C#创建一个与Microsoft Access数据库接口的程序。我当前的任务是捕获创建条目的日期/时间,计算存储值与当前日期之间的差值,并将其显示在单元格中。我不确定的是,是在C#中进行计算,然后将其存储在数据库中,还是先将信息存储在数据库中,然后使用SQL执行计算

我还需要跟踪一个单位在特定状态代码下被分类的时间。我需要跟踪状态代码更改的日期/时间,并计算状态代码更改日期与当前日期之间的天数差

例如…如果xyz单元是a,其状态代码在3/5更改,当前日期为3/8…我希望它显示它已处于悬而未决状态3天

其全部目的是确定生产过程中的瓶颈所在

我使用的是Visual Studio 2015 Professional和Microsoft Access 2010。数据库存储为.mdb文件

如果这有点混乱,我很抱歉。我很乐意编辑我的问题,添加更多细节,和/或提供澄清以帮助回答此问题

编辑代码

这是我尝试过的仅有的两位代码。我还尝试使用Now()-StartDate在Access中进行计算,但成功率有限

var seconds = DateTime.Now.Subtract(yourDateTimeObject).TotalSeconds;
以秒为单位显示差异。希望这能有所帮助。您还可以获取其他内容的总计,如
totalmillizes


另外,
DateTime.Now
将当前时间作为
DateTime
对象获取。您还可以通过执行类似于
var seconds=oneDateTimeObject.Subtract(另一个datetimeobject.TotalSeconds)的操作来比较两个
DateTime
对象

根据以下示例,可以通过几种不同的方式完成任务:

在MS Office/Access VBA中,使用以下功能:

DateDiff ( interval, date1, date2, [firstdayofweek], [firstweekofyear])
e、 g.(日差):

DateDiff(“d”,[StartDate],Now())

或以秒为单位的差异:

DateDiff(“s”,[StartDate],Now())

并使用MS Access SQL查询计算天数差异,如下所示(推荐):

注意:与您的计算示例相关,它也可以在MS Access SQL中编程,如下所示(不推荐,因为处理负值时可能会出错):

也可以根据@JaredPrice成员给出的答案用C#计算,或者使用.NET/C#(re:)中类似的
DateAndTime.DateDiff()
方法计算,例如:

long _diffDays = DateDiff(DateInterval.Day, StartDate, DateTime.Now);

希望这会有所帮助。

显示您迄今为止尝试过的代码。如果
StartDate
是访问日期/时间字段,则“使用Now()-StartDate在Access中进行计算并取得有限的成功”似乎应该有效。你提到的限制是什么?我说它的成功有限,因为虽然它确实显示了差异,但它显示为十进制,我不知道如何只显示天数。当我确定该方法会有问题时,我决定问这个问题。@HansUp是对的:Now()-StartDate表达式将起作用,返回表示日期时间的值(整数部分表示天,小数部分表示24小时的分数)。可以使用表达式DiffDays2:Fix(Now()-[StartDate])将其转换为天差;答案中显示了多种备选(推荐)解决方案。致以最良好的祝愿,这起到了巨大的作用!这是我收到的最好、最有用的答案之一。非常感谢。不客气。同样,感谢您的赞赏,祝您的项目好运!顺致敬意,
SELECT StartDate, DateDiff("d",[StartDate],Now()) AS DiffDays FROM Table1;
SELECT StartDate, Fix(Now()-[StartDate]) AS DiffDays2  FROM Table1;
long _diffDays = DateDiff(DateInterval.Day, StartDate, DateTime.Now);