C#根据生日字段获得最近5天内过生日的员工。

背包客1 2015-09-06 01:31:09
最近有一个需求,数据库员工表中有一个生日字段,是datetime类型,现在项目首页有一个员工生日提醒,需要获得最近5天内过生日的员工,用C# lamda表达式 ,不知道怎么样取,求帮助。
...全文
341 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
很多种方案,例如 可以增加 生日 月份,日期的的字段,或者将生日和日期拼成个四位数的int,然后 .....
风吹腚腚凉 2015-09-06
  • 打赏
  • 举报
回复
完了忘记考虑换年了。 既然如此我只好使出杀手锏了。!!!! x=>x.日期.ToString("2010-MM-dd") 2010你爱写多少就写多少然后翻转成日期就行了 var dddzz = dda.Where(x => Convert.ToDateTime(x.ToString("2010-MM-dd")) == Convert.ToDateTime(DateTime.Now.ToString("2010-MM-dd"))); 剩下的你自己改吧。
风吹腚腚凉 2015-09-06
  • 打赏
  • 举报
回复
这种程度上的需求,过个生日,晚一天提醒就晚一天我感觉也无所谓了。
风吹腚腚凉 2015-09-06
  • 打赏
  • 举报
回复
不考虑闰年的话,DayOfYear这样就完事了。
zmm12 2015-09-06
  • 打赏
  • 举报
回复
楼主,你的这个问题只是一个条件筛选,相对不复杂的,复杂的是 怎样“被动”得到 5天内会过生日的员工
sp1234_maJia 2015-09-06
  • 打赏
  • 举报
回复
对于 #1 楼的代码,它并没有具体说 DateTime 是如何计算的。 因为你只是问 Linq,实际上 Linq 中可以写 let x = new DateTime(r.Y, r.M, r.D)。不过不知道你所使用的 Linq Provider 是否支持这种表达方式。 你可以看你的数据库所支持的“计算datetime相隔天数的函数”,然后在你的 Linq Provider 中如何可以直接调用。
  • 打赏
  • 举报
回复
嗯,sorry,#1 楼其实已经考虑到 Date 了。人家没有 “那用今天2015-09-06去相减”,你又从哪里看到相减的计算呢?
  • 打赏
  • 举报
回复
例如,可以写类似于: x >= DateTime.Now.Date.AddDays(-5).Date() && x< DateTime.Now.Date.AddDays(6).Date()
  • 打赏
  • 举报
回复
引用 2 楼 u013043965 的回复:
[quote=引用 1 楼 starfd 的回复:]
DateTime >= DateTime.Now.Date.AddDays(-5) && DateTime<= DateTime.Now.Date.AddDays(6)
你这个的话,比如说我生日是2011-09-05呢?那用今天2015-09-06去相减,天数很定错了呀[/quote] 要把 DateTime 中的“时分”去掉,只保留日期部分。
  • 打赏
  • 举报
回复
 l.Date>= SqlFunctions.DateAdd("year",SqlFunctions.DateDiff("year",DateTime.Now.Date,l.Date))
                && l.Date < SqlFunctions.DateAdd("day",6,SqlFunctions.DateAdd("year",SqlFunctions.DateDiff("year",DateTime.Now.Date,l.Date)))
这样不知道行不行
  • 打赏
  • 举报
回复
DECLARE @Date DATETIME,
@newDate VARCHAR(50)
SET @Date = '2013-10-01'
SET @newDate='-10-03'

SELECT DATEDIFF(d,@Date, CONVERT(VARCHAR,DATEPART(yyyy,@Date))+@newDate)
用SqlFunctions这东西就不知道怎么写了……
背包客1 2015-09-06
  • 打赏
  • 举报
回复
引用 1 楼 starfd 的回复:
DateTime >= DateTime.Now.Date.AddDays(-5) && DateTime<= DateTime.Now.Date.AddDays(6)
你这个的话,比如说我生日是2011-09-05呢?那用今天2015-09-06去相减,天数很定错了呀
  • 打赏
  • 举报
回复
DateTime >= DateTime.Now.Date.AddDays(-5) && DateTime<= DateTime.Now.Date.AddDays(6)

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧