2016-03-08 189 views
-1

我正在用C#創建一個與Microsoft Access數據庫接口的程序。我目前的任務是捕獲創建條目的日期/時間,並計算存儲值與當前日期之間的差異,並將其顯示在單元格中。我不確定的是,是否在C#中進行計算,然後將它們存儲在數據庫中或首先將信息存儲在數據庫中,然後使用SQL執行計算。計算日期和當前日期之間的差異

我還需要跟蹤一個單元在特定狀態代碼下的分類時間。我需要跟蹤狀態碼更改的日期/時間,並計算狀態碼更改日期和當前日期之間的天數差異。

例如...如果單位xyz的狀態代碼已在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中進行計算,但成功有限。

+3

顯示你到目前爲止嘗試過的代碼。 –

+2

*「在Access中使用Now()進行計算 - 有限成功的StartDate」*如果'StartDate'是訪問日期/時間字段,似乎應該可以工作。你提到的限制是什麼? – HansUp

+0

我說它的工作取得了有限的成功,因爲雖然它顯示了差異,它顯示爲一個小數,我無法弄清楚如何只顯示天數。當我確定我會遇到這種方法的問題時,我決定提出這個問題。 –

回答

4

任務可以以幾種不同的方式按照以下實施例來完成:使用函數

在MS辦公室/訪問VBA

DateDiff (interval, date1, date2, [firstdayofweek], [firstweekofyear]) 

例如(天數差異):

DateDiff("d",[StartDate],Now())

或區分在秒:

DateDiff("s",[StartDate],Now())

,並且還計算差在使用MS訪問SQL查詢如下所示天(推薦):

SELECT StartDate, DateDiff("d",[StartDate],Now()) AS DiffDays FROM Table1; 

注意:有關你的計算樣本,也可能是還編程在MS Access SQL爲以下(不能因爲可能出現的錯誤的建議,同時處理負值):

SELECT StartDate, Fix(Now()-[StartDate]) AS DiffDays2 FROM Table1; 

它可以在C#中也計算爲每回答構件@JaredPrice給出,或使用類似的方法DateAndTime.DateDiff()可用在.NET/C#(重:https://msdn.microsoft.com/en-us/library/ms127413(v=vs.110).aspx),例如:

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

希望這將幫助。

+0

這大大幫助!這是我收到的最好和最有幫助的答案之一。謝謝! –

+0

不客氣。同樣,感謝您對項目的讚賞和祝福!最好的祝福, –

2
var seconds = DateTime.Now.Subtract(yourDateTimeObject).TotalSeconds; 

使你在幾秒鐘的差異。希望有幫助。你也可以得到其他東西的總數,如TotalMilliseconds

另外,DateTime.Now將當前時間作爲DateTime對象獲取。您也可以通過執行類似var seconds = oneDateTimeObject.Subtract(anotherDateTimeObject).TotalSeconds;的對比來比較兩個DateTime對象。

相關問題