C# 计算日期和当前日期之间的差值
我正在用C#创建一个与Microsoft Access数据库接口的程序。我当前的任务是捕获创建条目的日期/时间,计算存储值与当前日期之间的差值,并将其显示在单元格中。我不确定的是,是在C#中进行计算,然后将其存储在数据库中,还是先将信息存储在数据库中,然后使用SQL执行计算 我还需要跟踪一个单位在特定状态代码下被分类的时间。我需要跟踪状态代码更改的日期/时间,并计算状态代码更改日期与当前日期之间的天数差 例如…如果xyz单元是a,其状态代码在3/5更改,当前日期为3/8…我希望它显示它已处于悬而未决状态3天 其全部目的是确定生产过程中的瓶颈所在 我使用的是Visual Studio 2015 Professional和Microsoft Access 2010。数据库存储为.mdb文件 如果这有点混乱,我很抱歉。我很乐意编辑我的问题,添加更多细节,和/或提供澄清以帮助回答此问题 编辑代码 这是我尝试过的仅有的两位代码。我还尝试使用Now()-StartDate在Access中进行计算,但成功率有限C# 计算日期和当前日期之间的差值,c#,sql,datetime,ms-access,datediff,C#,Sql,Datetime,Ms Access,Datediff,我正在用C#创建一个与Microsoft Access数据库接口的程序。我当前的任务是捕获创建条目的日期/时间,计算存储值与当前日期之间的差值,并将其显示在单元格中。我不确定的是,是在C#中进行计算,然后将其存储在数据库中,还是先将信息存储在数据库中,然后使用SQL执行计算 我还需要跟踪一个单位在特定状态代码下被分类的时间。我需要跟踪状态代码更改的日期/时间,并计算状态代码更改日期与当前日期之间的天数差 例如…如果xyz单元是a,其状态代码在3/5更改,当前日期为3/8…我希望它显示它已处于悬而
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);