我正在使用C#创建一个与Microsoft Access数据库连接的程序。我当前的任务是捕获创建条目的日期/时间,并计算存储值和当前日期之间的差异,并在单元格中显示。我不确定的是,是否在C#中进行计算,然后将它们存储在数据库中或首先将信息存储在数据库中,然后使用SQL执行计算。
我还需要跟踪某个单元在特定状态代码下的分类时间。我需要跟踪状态代码更改的日期/时间,并计算状态代码更改日期与当前日期之间的天数差异。
例如......如果单位xyz是a,其状态代码在3/5上更改,当前日期是3/8 ......我希望它显示它已经处于不稳定状态3天。
这样做的目的是确定生产过程中瓶颈的位置。
我使用的是Visual Studio 2015 Professional和Microsoft Access 2010.数据库存储为.mdb文件。
如果这有点令人困惑,我很抱歉。我很乐意编辑我的问题,添加其他详细信息和/或提供说明以帮助回答此问题。
编辑代码
private void button1_Click(object sender, EventArgs e)
{
DateTime startDate = new DateTime();
DateTime a = DateTime.Now;
startTimeTextBox.Text = a.ToString();
}
private void button2_Click(object sender, EventArgs e)
{
DateTime b = DateTime.Now;
}
这是我尝试过的唯一两位代码。我还尝试在Access with Now() - StartDate中进行计算,但成效有限。
答案 0 :(得分:4)
根据以下示例,可以通过几种不同的方式完成任务:
在MS Office / Access VBA中使用以下功能:
DateDiff ( interval, date1, date2, [firstdayofweek], [firstweekofyear])
e.g。 (差异天数):
DateDiff("d",[StartDate],Now())
或差异在秒:
DateDiff("s",[StartDate],Now())
并使用MS Access SQL查询计算天数差异,如下所示(推荐):
SELECT StartDate, DateDiff("d",[StartDate],Now()) AS DiffDays FROM Table1;
注意 :与您的计算示例相关,它也可以在MS Access SQL中编程如下(不推荐,因为在处理负值时可能出错):
SELECT StartDate, Fix(Now()-[StartDate]) AS DiffDays2 FROM Table1;
也可以根据成员@JaredPrice给出的答案,或者使用.NET / C#中提供的类似DateAndTime.DateDiff()
方法(re:https://msdn.microsoft.com/en-us/library/ms127413(v=vs.110).aspx)在C#中计算,例如:
long _diffDays = DateDiff(DateInterval.Day, StartDate, DateTime.Now);
希望这会有所帮助。
答案 1 :(得分:2)
var seconds = DateTime.Now.Subtract(yourDateTimeObject).TotalSeconds;
让你在几秒钟内有所不同。希望这会有所帮助。您还可以获得其他内容,例如TotalMilliseconds
。
此外,DateTime.Now
将当前时间作为DateTime
对象获取。您还可以通过执行DateTime
之类的操作来比较两个var seconds = oneDateTimeObject.Subtract(anotherDateTimeObject).TotalSeconds;
对象。