5

Chcę uzyskać datę część tylko z bazy danych "data czasu" wartość I m przy użyciu poniższego kodu .., ale jest to pobieranie części daty i czasu.uzyskać datę część tylko z wartości datetime za pomocą struktury podmiotu

using (FEntities context = new FEntities()) 
{ 
    DateTime date = DateTime.Now; 
    if (context.tblvalue.Any(x => x.date == date)) 
    {  
    } 
} 
+0

Nie zapomnij znak wybraną odpowiedź na Twój questions.That pomoże innym ludziom znaleźć właściwą odpowiedź. Wygląda na to, że nigdy nie wybrałeś odpowiedzi na swoje pytania. –

+0

to nie działa na mnie.Albo używam jak poniżej.now pracy.dziękuję 'x.date.Value.Date == date.Date' – Safeena

+0

' DateTime.Date' nie jest obsługiwany w EF aż do teraz, więc nie wiem, jak to może teraz działać dla ciebie. –

Odpowiedz

17

Możesz porównać tylko określone części:

context.tblvalue.Any(x => x.date.Year == data.Year 
         && x.date.Month == data.Month 
         && x.date.Day == data.Day); 

EDIT: Można też spróbować wykonać następujące czynności:

context.tblvalue.Any(x => EntityFunctions.TruncateTime(x.date) == data.Date); 

Innym podejściem:

context.tblvalue.Any(x => SqlFunctions.DatePart("year", x.date) == data.Year 
         && SqlFunctions.DatePart("month", x.date) == data.Month 
         && SqlFunctions.DatePart("day", x.date) == data.Day); 
+1

do tego, jakiej wersji framework podmiotu muszę użyć.Teraz nie mogę użyć 'x.date.Year == date.Year' – Safeena

+0

@Safeena zobacz moją edycję. –

+4

W nowszych wersjach EF EntityFunctions jest przestarzała i została zastąpiona przez "DbFunctions", ale w przeciwnym razie drugie podejście jest bardzo ważne i używam go w takich okolicznościach. –

0
context.Database.SqlQuery<T>(sql, sql_parameters) 

akceptuje czysty SQL w pierwszym parametrze. Użyj funkcji serwera MS SQL CONVERT (VARCHAR (6), date_value, 112) AS MonthYYYYmm dla wyszukiwania roku z miesiąca.

2

z Entity Framework 6 i aktualizacji użytku

context.tblvalue.Any(x => DbFunctions.TruncateTime(x.date) == data.Date); 
Powiązane problemy