2016-09-29 56 views
0

所以我遇到了一個問題,我將一組從C到C的參數傳遞給SqlCommand。我的測試場景涉及以下日期如何添加和SqlCommand進行比較?

  • 來自:2016年8月30日
  • 於:2016年8月31日

然而,結果包括9月1日2016年

使用SQL數據服務器分析器我可以看到進入SQL查詢的日期是'2016-09-01 00:00:00',而不是2016-08-31 23:59:59。

下面是相關的C#代碼片段

if (request.DateStart != DateTime.MinValue) 
    command.Parameters.Add(new SqlParameter("@dateStart", request.DateStart)); 

if (request.DateEnd != DateTime.MinValue) 
    command.Parameters.Add(new SqlParameter("@dateEnd", request.DateEnd)); 

什麼會是造成C#來改變它發送到SQL的日期?

回答

1

因此事實證明,我在前端使用(。).endOf('day')將日期結束髮送到API上的DateEnd參數。問題是,這最終是'2016-08-31 23:59:59:9990'的日期。這恰好比SQL的日期時間類型更精確,所以c#有用地將日期值舍入爲'2016-09-01 00:00:00'。

我已將前端代碼更改爲以下內容,並解決了問題。在這種情況下,事實證明有太多的精度。

moment(filter.dateEnd).add(1, 'day').add(-1, 'second') 
+0

如果創建的時間「59:59:59:9990」,那麼這只是無效的,因爲只有24小時,每天(不是60)。 – juharr

+0

你在你的問題中有同樣的問題。 – juharr