[原创] EF中时间差的计算

EF C# linq

2015-07-28 2981

虽然我不喜欢c#但是没办法,很多项目还是C#写的,遇到了问题还是要解决的。

ef中时间差的计算

在日常开发中,经常会遇到求两个时间差的问题,例如需要自动审核发布时间超过24小时的帖子,那么我们就需要获取相距当前时间24小时的数据。

https://msdn.microsoft.com/zh-cn/library/system.data.objects.entityfunctions.diffdays(v=vs.110).aspx

ef中的写法,这里只是一部分代码,你懂的


System.Data.Objects.EntityFunctions.DiffHours(DateTime.Now,x.AddTime)<-24,为了搞清楚这两个参数处理后的结果是什么,我还特意跟踪了一下ef的执行过程,生成的相关sql代码如下:

((DATEDIFF (day, SysDateTime(), [Extent1].[AddTime])) < -1
这里我们看到DATEDIFF() ,关于此方法的说明看这里http://www.w3school.com.cn/sql/func_datediff.asp

定义和用法

DATEDIFF() 函数返回两个日期之间的天数。

语法

DATEDIFF(datepart,startdate,enddate)

startdate 和 enddate 参数是合法的日期表达式。

datepart 参数可以是下列的值:

datepart 缩写
yy, yyyy
季度 qq, q
mm, m
年中的日 dy, y
dd, d
wk, ww
星期 dw, w
小时 hh
分钟 mi, n
ss, s
毫秒 ms
微妙 mcs
纳秒 ns


实例

例子 1

使用如下 SELECT 语句:

SELECT DATEDIFF(day,'2008-12-29','2008-12-30') AS DiffDate

结果:

DiffDate
1

例子 2

使用如下 SELECT 语句:

SELECT DATEDIFF(day,'2008-12-30','2008-12-29') AS DiffDate

结果:

DiffDate
-1