Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 获取上周在数据库中按日期时间添加的记录_C#_Entity Framework - Fatal编程技术网

C# 获取上周在数据库中按日期时间添加的记录

C# 获取上周在数据库中按日期时间添加的记录,c#,entity-framework,C#,Entity Framework,我在我的项目中使用asp.NETMVC。我的数据库表包含一些记录。该表具有记录的datetime列。我想要上星期的记录。因此,LastlyRecords是: DateTime.Now = 04.04.2015 LastWeekDateTime = 28.04.2015 LastWeekDateTime < LastlyRecords < DateTime.Now DateTime.Now=2015年4月4日 LastWeekDateTime=2015年4月28日 LastWeekD

我在我的项目中使用asp.NETMVC。我的数据库表包含一些记录。该表具有记录的datetime列。我想要上星期的记录。因此,
LastlyRecords
是:

DateTime.Now = 04.04.2015
LastWeekDateTime = 28.04.2015
LastWeekDateTime < LastlyRecords < DateTime.Now
DateTime.Now=2015年4月4日
LastWeekDateTime=2015年4月28日
LastWeekDateTime
有一个接受“开始日期”和“结束日期”作为参数的方法

使用开始/结束日期进行调用,如:

GetRecords(DateTime.Now.AddWeeks(-1), DateTime.Now);
为此,您可以让存储过程获取该日期范围之间的记录(或者对Entity Framework或您正在使用的任何东西执行类似操作)


您可以通过GETDATE()和DATEADD()在T-SQL中执行类似的操作,但在调用代码中执行范围计算可能更好(因为它更像是一种业务逻辑,而不是数据访问)。

您必须在查询中编写逻辑,或者您可以根据日期时间范围修改以下内容

var lastweek=DateTime.Now.AddDays(7);
var记录=d(单位:db.Persons)
其中DateTime.Compare(lastweek,d.DateRecordColumn)
和DateTime.Compare(d.DateRecordColumn,DateTime.Now)
选择d

结果是真的,所以是在上周。

在我的表中,dateTime列具有字符串值。我用split获取dateTime的日期,并比较
dateTime.Today.AddDays((int)-7).day
但是当我的dateTime是例如
3
时,现在的日期是
4
。4-7 = 28. 不是28,我强烈建议您将数据库表更改为使用日期类型而不是日期字符串。不这样做将是一个严重的设计缺陷,它将影响性能并使代码复杂化。
var week=Person.Where(x=>Int32.Parse(x.dateTime.Split(“”).ElementAt(0))dateTime.Today.AddDays((int)-7.Day&&x.dateTime.Split(“”).ElementAt(1.ToString()==DateTime.Now.ToString(“MMMM”)和&Int32.Parse(x.DateTime.Split(“”).ElementAt(2))==DateTime.Now.Year)
LastWeekDay>DateTime.Now.Day是我上周的查询,但在
2015年4月4日
MyTime
04时出错了?我相信你只需要玩这个。因为您的日期是字符串格式。这实际上是您在表中以字符串形式存储日期的方式。您可以在sql端本身尝试一下,并使用我提供的相同逻辑,在比较之前将datestring字段转换为date类型,这样您就可以正确地进行比较了。转换(DATETIME,datetimeColumn,XXX)>GETDATE()
string dateTime = "01 April 2015 Wednesday 16:23";
DateTime time1 = Convert.ToDateTime(dateTime);

if (DateTime.Compare(DateTime.Now, time1) == 1 &&  // DateTime.Now > time1
    DateTime.Compare(time1, DateTime.Today.AddDays((int)-7)) == 1 // time1 >= DateTime.Now-7days
    )
{
    @("True.")
}
else
{
    @("False.")
}