将日期时间转换为日期或默认方法
本文关键字:日期 默认 方法 转换 时间 | 更新日期: 2023-09-27 18:36:56
我想制作一个保存日期和时间的系统,但首先我想检查操作是否没有在同一天完成。我在 sql 架构中创建了一个名为 TruncateTime 的函数,如下所示:
Create FUNCTION TruncateTime(@dateValue DateTime) RETURNS date
AS BEGIN
RETURN CONVERT(date, @dateValue)
END
为了检查我的 c# 脚本中的日期,我写了:
p = dc.pointages.SingleOrDefault(x =>
x.userid.Equals(user_id) &&
EntityFunctions.TruncateTime(x.date_pointage)== today.Date );
抛出的解释是:
类型为"系统.不支持的异常"发生在 System.Data.Linq.dll但未在用户代码中处理
我尝试了很多方法,我现在很困惑。
在对数据库集执行 linq 查询时,不能使用自定义方法,但可以先将其放入列表,然后再进行比较。请注意,执行此操作时会获取所有记录,而不是在数据库中进行筛选。
p = dc.pointages
.Where(x => x.userid.Equals(user_id))
.ToList() // this will enable you to call custom methods in SingleOrDefault
.SingleOrDefault(x =>
EntityFunctions.TruncateTime(x.date_pointage)== today.Date );
使用 LinqPad,我为您创建了示例:
List<DateTime> dates = new List<DateTime>(){
new DateTime(2015,1,1,0,0,1),
new DateTime(2015,1,1,0,1,1),
new DateTime(2015,1,2,0,2,2),
new DateTime(2015,1,2,0,3,3),
new DateTime(2015,1,3,0,4,4),
new DateTime(2015,1,3,0,5,5),
new DateTime(2015,1,9,8,7,6),
new DateTime(2015,1,9,9,7,7),
new DateTime(2015,1,9,10,8,8),
new DateTime(2015,1,9,11,9,9),
new DateTime(2015,1,9,12,10,10),
new DateTime(2015,1,9,13,11,11)
};
var qry = dates.Where(x=>x.ToString("yyyy/MM/dd")==new DateTime(2015,1,9).ToString("yyyy/MM/dd"));
qry.Dump();
结果:
2015-01-09 08:07:06
2015-01-09 09:07:07
2015-01-09 10:08:08
2015-01-09 11:09:09
2015-01-09 12:10:10
2015-01-09 13:11:11
注意:您需要将其更改为您的需要;)
您应该能够使用 DateTime 对象的内置日期比较,如下所示:
p = dc.pointages.SingleOrDefault(x =>
x.userid.Equals(user_id) &&
x.date_pointage.Date.Equals(DateTime.Today.Date);