计算日期和当前日期之间的差异

时间:2016-03-08 20:20:58

标签: c# sql datetime ms-access datediff

我正在使用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中进行计算,但成效有限。

2 个答案:

答案 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;对象。