如何比较sql datetime和c#datetime

时间:2015-06-17 09:21:09

标签: c# sql-server datetime

这是从我的previous question

中诞生的

我在c#中有一个DateTime。

然后将此值插入数据库。

之后选择此值并比较该日期与开头的日期相同。

最好的方法是什么? 由于SQL datetime具有不同的刻度,因此第一步中的DateTime将与SQL DateTime(row [“MyDate”])

不同

如何比较它们?

3 个答案:

答案 0 :(得分:4)

从另一个中减去一个&检查生成的TimeSpan的刻度是否在刻度长度差异的可接受限度内

答案 1 :(得分:3)

您可以使用SqlDateTime结构。

DateTime now = DateTime.Now;
SqlDateTime sqlNow = new SqlDateTime(now);
bool equal = now == sqlNow.Value; // false

因此,如果你有一个DateTime并想知道它是否等于数据库 - DateTime使用:

Assert.Equal(dbEndTime, new SqlDateTime(endTime).Value); //  true

SqlDateTime

  

表示从1月1日开始的日期和时间数据,   1753年到9999年12月31日,准确度为3.33毫秒   存储在数据库中或从数据库中检索。 SqlDateTime结构有   与其相应的.NET不同的底层数据结构   框架类型,DateTime,可以表示之间的任何时间   上午12:00:00 AM 1/1/0001和11:59:59 PM 12/31/99,准确度为   100纳秒。 SqlDateTime实际存储了相对差异   到19:00年1月1日00:00:00。因此,从“00:00:00 AM”转换   1/1/1900“到整数将返回0。

答案 2 :(得分:0)

如果你忽略毫秒差异,你可以尝试这个

Select * from MyTable DATEADD(ms, -DATEPART(ms, endTime), endTime) = @value