2016-09-29 30 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