加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – EntityFunctions.CreateDateTime问题与linq到实

发布时间:2020-12-16 03:21:13 所属栏目:asp.Net 来源:网络整理
导读:当我的数据库中有闰年时(例如:2012年2月29日). EntityFunctions.CreateDateTime函数抛出System.Data.SqlClient.SqlException:从字符串转换日期和/或时间时转换失败. 我的代码在我的asp.net mvc(C#)应用程序中如下: from u in _entities.tt_Userslet _star
当我的数据库中有闰年时(例如:2012年2月29日). EntityFunctions.CreateDateTime函数抛出System.Data.SqlClient.SqlException:从字符串转换日期和/或时间时转换失败.

我的代码在我的asp.net mvc(C#)应用程序中如下:

from u in _entities.tt_Users
let _start_date = u.Start_Date
let _startDate = _start_date.Day
let _startmonth = _start_date.Month
let _startyear = _start_date.Year
let _starthour = u.Start_Time.Value.Hours
let _startminutes = u.Start_Time.Value.Minutes
let _startseconds = u.Start_Time.Value.Seconds
let _startDateWithTime = EntityFunctions.CreateDateTime(_startyear,_startmonth,_startDate,_starthour,_startminutes,_startseconds)
let _startDateWithZeroTime = EntityFunctions.CreateDateTime(_startyear,0)
let _start_datetime = u.Is_Include_Time ? _startDateWithZeroTime : _startDateWithTime
let _end_date = u.End_Date
let _endDate = _end_date.Day
let _endmonth = _end_date.Month
let _endyear = _end_date.Year
let _endhour = u.End_Time.Value.Hours
let _endminutes = u.End_Time.Value.Minutes
let _endseconds = u.End_Time.Value.Seconds
let _endDateWithTime = EntityFunctions.CreateDateTime(_endyear,_endmonth,_endDate,_endhour,_endminutes,_endseconds)
let _endDateWithZeroTime = EntityFunctions.CreateDateTime(_endyear,0)
let _end_datetime = u.Is_Include_Time ? _endDateWithZeroTime : _endDateWithTime
let _cur_Start_date = u.Is_Include_Time ? _userStartDate : _gMTStartDate
let _cur_End_date = u.Is_Include_Time ? _userEndDate : _gMTEndDate
where u.User_Id == 1 && !u.Is_Deleted
&& _start_datetime >= _cur_Start_date && _end_datetime <= _cur_End_date
select new
{
  u.User_id,u.User_Name,u.Login_Name,u.Email_Address
};

这里_userStartDate,_userEndDate,_gMTStartDate和_gMTEndDate是我函数的参数.

如果列“Is_Include_Time”为true,那么我还必须从表中包含TimeSpan.但是对于闰年它抛出的错误.

有什么建议?

解决方法

我刚遇到同样的问题.我在数据库行中有一些值,我需要转换为日期时间.我发现我可以使用以下构造:

DateTime startDate = new DateTime(1,1,1);
            var counters = from counter in entities.Counter
                           let date = SqlFunctions.DateAdd("day",counter.DayOfMonth-1,SqlFunctions.DateAdd("month",counter.Month-1,SqlFunctions.DateAdd("year",counter.Year-1,startDate)))
                           where date >= dateFrom && date <= dateTo
                           orderby date
                           select new
                           {
                               Value = counter.CounterValue,Date = date
                           };

我不确定性能影响,但确实有效.

最好的祝福,托尔 – 奇

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读