In LINQ Query convert the string to datetime and check with today's date

后端 未结 6 1446
情歌与酒
情歌与酒 2021-01-24 17:24

In Table, DueDate data type is varchar. Now I want to check the due date with today\'s date

 var query = (from o in db.Order_Reports
              where Convert.         


        
6条回答
  •  不知归路
    2021-01-24 18:10

    I don't know a way to implement it as you describe it, because

    1. There's no function in SQL that will filter the dates in string format by inequality (at least those that work with your date format and are convertable from LINQ to SQL query).
    2. You have a flaw in your database design which prevents "normal" methods from working

    However, there are some possible workarounds

    1. Amend the database so that the date is of actual datetime format (best option, but of course sometimes unavailable)
    2. Create a stored procedure to achieve the same goal. In the SQL code, you can use date parsing
    3. Amend the query as follows:

    (code)

    // Our required date
    DateTime reportDate = new DateTime(2014,1,1).Date; 
    // Let's find number of days between now and required day. Ensure that the date is not in the future!
    int deltaDays = (DateTime.Now.Date - date).Days; 
    // Let's get the list of dates which we need the reports for
    var dates = Enumerable.Range(0, deltaDays + 1).Select(dd => DateTime.Now.Date.AddDays(-dd).ToString("MM/dd/yyyy")).ToArray();
    // and query by this list
    var query = (from o in db.Order_Reports
              where o.ReportDueDateTime in dates
              select o);
    

    This will be a little inefficient, but achieve the purpose without changing the DB. Treat it as temporary solution.

提交回复
热议问题