2012-04-19 2 views
0

문제가 있습니다. edmfunction을 사용하여이 형식 (dd/mm/yyyy)의 문자열을 변환 할 수 없습니다. 그래서 (mm/dd/yyyy) 할 수 있습니다.EdmFunction을 사용하여 문자열을 datetime으로 변환합니다. C#

내 컴퓨터의 문화는 포르투갈어 BR입니다.

class Program 
{ 
    [EdmFunction("testeModel", "ConvertToDateTime")] 
    public static DateTime ConvertToDateTime(table table) 
    { 
     throw new NotSupportedException(); 
    } 

    static void Main(string[] args) 
    { 
     var date = DateTime.Now.Date; 

     using (testeEntities t = new testeEntities()) 
     { 
      var values = t.tables.Where(a => ConvertToDateTime(a) == date); 

      foreach (var value in values) 
      { 
       Console.WriteLine(value.nome); 
      } 
     } 

     Console.ReadKey(); 
    } 

<Function Name="ConvertToDateTime" ReturnType="Edm.DateTime" > 
     <Parameter Name="t" Type="testeModel.table" /> 
     <DefiningExpression> 
     cast(t.date as DateTime) 
     </DefiningExpression> 
    </Function> 

내 샘플 값 : - OK 18/04/2012이 -

어떤 제안 실패 2012년 4월 18일

, 아래에있는 내 예를 제발 봐?

감사합니다.

+0

'ConvertToDateTime'의 실제 본문은 무엇입니까? –

+0

서버에서 변환을 수행 하시겠습니까? –

+0

안녕하세요 @AnuragRanjhan. 이것은 실제 신체입니다. 안녕 – Gus

답변

0

글쎄, 캐스트가 궁극적으로 SQL로 변환되므로이 문자열을 올바르게 처리하도록 서버를 설정해야합니다 (예 : SET DATEFORMAT).

그러나이 캐스팅은 모든 행에 대해 수행되며 아마도 느려질 것입니다. 값을 저장하거나 (미리 구문 분석하고 YYYY-MM-DD으로 저장하는) 다른 방법을 찾거나 동등성을 다르게 작성하는 것이 좋습니다.

관련 문제