Home > front end >  Check if todays date exists in a table with Entity Framework
Check if todays date exists in a table with Entity Framework

Time:02-05

I have a database table with columns of type dateTime.

Now I need to see if there already is a row with today's date, but I don't know how to compare the column with the current date without the hour, minutes, seconds.

Basically I have 2022-02-04 14:06:21.080 and I need to check if there is a row created on 2022-02-04.

I'm looking for something like

if (db.dates.Where(x => x.SentDate == Date.Now).Count() > 0)
{
     // Do something
}
else
{
     // Do something else
}

I only need to see if it has a date from today it doesn't matter what time it was created.

Any help is much appreciated!

CodePudding user response:

If you're filtering for a specific day you can use the DateTime.Date property on both DateTime objects. This will compare the date component of the DateTime:

db.dates.Where(x=> x.SentDate.Date == DateTime.Now.Date)
// or
db.dates.Where(x=> x.SentDate.Date == DateTime.Today)

Tested and working for me in EF.

PS: DateTime.Today is the same as DateTime.Now.Date

CodePudding user response:

You can check a date range

var today = DateTime.Today;
var tomorrow = today.AddDays(1);

if(db.dates.Where(x => x.SentDate >= today && x.SentDate < tomorrow) ...

The DateTime.Today Property gets the current date with the time component set to 00:00:00.

Note that we test the lower bound with >= today (with today meaning today at 00:00:00) but the upper one with < tomorrow, since we do not want to include tomorrow at 00:00:00.

CodePudding user response:

if you use ms sql server you can use a special function EF.Functions.DateDiff that was create to use with EF. It can count datetime difference from seconds to months. DateDiffDay is used to count days

var  dateTimeNow= DateTime.Now;
if (db.dates.Where(x => EF.Functions.DateDiffDay(x.SentDate , dateTimeNow) == 0 )
{
...
  •  Tags:  
  • Related