2011-11-11 16 views
5

जब मेरे डेटाबेस में एक लीप वर्ष है (उदा .: 2 9 फरवरी 2012)। EntityFunctions.CreateDateTime कार्यों फेंकता System.Data.SqlClient.SqlException: Conversion failed when converting date and/or time from character string.EntityFunctions.CreateDateTime समस्या लीप के साथ इकाई में linq वर्ष

मेरे कोड मेरे asp.net MVC के में इस प्रकार (सी #) अनुप्रयोग है:

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, _startmonth, _startDate, 0, 0, 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, _endmonth, _endDate, 0, 0, 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" सत्य है, तो मुझे तालिका से टाइमस्पेन भी शामिल करना होगा। लेकिन छलांग वर्ष के लिए यह त्रुटि फेंक रहा है।

कोई सुझाव?

उत्तर

0

के रूप में मैं सुझाव here

+1

इसका मेरे मामले में काम करने के लिए, क्योंकि मैं दिनांक और समय में साथ-साथ तुलना करने की आवश्यकता नहीं जा रहा डेटाबेस। कोई अन्य विकल्प? – Prasad

2

मैं सिर्फ एक ही समस्या का सामना करना पड़ा LINQ अभिव्यक्ति के बाहर एक घोषित चर का उपयोग करने का प्रयास करें। मेरे पास डेटाबेस पंक्तियों में कुछ मान हैं जिन्हें मुझे डेटाटाइम में कनवर्ट करने की आवश्यकता है। मुझे पता चला कि मैं निम्नलिखित निर्माण का उपयोग कर सकता हूं:

  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 
          }; 

मुझे प्रदर्शन प्रभाव के बारे में निश्चित नहीं है, लेकिन यह काम करता है।

सादर, टो-अजीब

0

इस तरह है कि मैं के साथ सौदा है

var minDate = Convert.ToDateTime("1900-01-01 00:00:00"); 
return source.Where(x => EntityFunctions.DiffDays(x.ReviewedDate, minDate) > 0).ToList(); 
संबंधित मुद्दे