2014-11-24 39 views
0

我看起來是NOW()函數的問題。我用下面的循環運行腳本。我首先將當前的日期/時間拉到一個變量中,然後將其作爲字符串保存到我的數據庫中。當循環完成處理時,我會在相同的時間執行相同的操作。最後,我在它們之間做日期差異來計算持續時間(取決於正在處理的數據,可能需要1秒到2小時)。當我所說的和完成的時候,我在數據庫中看到的是開始和結束時間是相同的,但持續時間是正確的。這怎麼可能?是否有任何已知問題影響在VB腳本中使用NOW()函數

While Not loRS.EOF 

    ldJobStartDT = Now() 
    LogToDashboard lsDatabaseName, "StartTime", cStr(ldJobStartDT) 
    . 
    . 
    {Do Lots of stuff} 
    . 
    . 
    ldJobEndDT = Now() 
    LogToDashboard lsDatabaseName, "EndTime", cStr(ldJobEndDT) 

    llJobDuration = DateDiff("s", ldJobStartDT, ldJobEndDT) 
    LogToDashboard lsDatabaseName, "Duration", llJobDuration 
Wend 
+0

您需要檢查/發佈'LogToDashboard'以確保它不存儲當前時間(正如日誌函數經常這樣做)。 Now()是不穩定的,但在這裏不是問題,因爲你發送字符串複製到該Sub。 – 2014-11-24 20:11:22

回答

0

從幫助中。您的代碼將其四捨五入以進行顯示。看看是否將它視爲Double更適合你。

日期數據類型

日期變量存儲爲IEEE 64位(8字節)表示的日期範圍從一月100 12月1日至31日9999浮點數和時間從0點00分00秒到23:59:59。任何可識別的文字日期值都可以分配給日期變量。日期文字必須用數字符號(#)括起來,例如#1993年1月1日#或1月93###1。

日期變量根據計算機識別的短日期格式顯示日期。時間根據計算機識別的時間格式(12小時或24小時)顯示。

當其他數字類型轉換爲日期時,小數點左邊的值表示日期信息,小數點右邊的值表示時間。午夜爲0,中午爲0.5。負整數表示日期在1899年12月30日之前。

+0

由Now()獲得的舍入值不能負責丟失持續時間「從1秒到2小時」。 – 2014-11-24 21:11:42

+0

讓我們把它打印成一個CDbl,看看它說什麼。 – 2014-11-24 21:23:08

+0

也刪除CStr,這是沒有必要的。 – 2014-11-24 21:34:38

相關問題