SQL server使用LINQ转换日期时间
我在SQL server中有我需要的查询,但我使用的是实体框架,并且希望使用LINQ得到相同的结果。以下是SQL:SQL server使用LINQ转换日期时间,sql,linq,entity-framework,Sql,Linq,Entity Framework,我在SQL server中有我需要的查询,但我使用的是实体框架,并且希望使用LINQ得到相同的结果。以下是SQL: select convert(varchar, date_recorded, 12), MAX(outdoor_temp), MAX(wind_speed) from weatherdata group by convert(varchar, date_recorded, 12) order by convert(varchar, date_recorded, 12) DESC ;
select convert(varchar, date_recorded, 12), MAX(outdoor_temp), MAX(wind_speed)
from weatherdata
group by convert(varchar, date_recorded, 12)
order by convert(varchar, date_recorded, 12) DESC ;
这将我的datetime列转换为正确的格式,允许我正确分组。基本上,我需要能够将我的SQL datetime转换为yymmdd格式
非常感谢课程
class Program
{
static void Main(string[] args)
{
var entries = new List<Entry>()
{
{new Entry { Date = DateTime.UtcNow, Outdoor_Temp = 10, Wind_Speed = 5 }},
{new Entry { Date = DateTime.UtcNow, Outdoor_Temp = 5, Wind_Speed = 10}},
{new Entry { Date = DateTime.UtcNow.AddDays(-1), Outdoor_Temp = 15, Wind_Speed = 7}}
};
(from e in entries
group e by e.Date.ToShortDateString() into g
select
new
{
StringDate = g.Key,
MaxWind_Speed = g.Max(entry => entry.Wind_Speed),
MaxOutdoor_Temp = g.Max(entry => entry.Outdoor_Temp)
}
).ToList().ForEach(Console.WriteLine);
}
public class Entry
{
public DateTime Date { get; set; }
public int Outdoor_Temp { get; set; }
public int Wind_Speed { get; set; }
public override string ToString()
{
return string.Format("Date : {0}, Outdoor_Temp : {1}, Wind_Speed : {2}", Date, Outdoor_Temp, Wind_Speed);
}
}
}
{
静态void Main(字符串[]参数)
{
var entries=新列表()
{
{新条目{Date=DateTime.UtcNow,室外温度=10,风速=5},
{新条目{Date=DateTime.UtcNow,室外温度=5,风速=10},
{新条目{Date=DateTime.UtcNow.AddDays(-1),室外温度=15,风速=7}}
};
(e)在条目中
按e.Date.ToSortDateString()将e分组为g
选择
刚出现的
{
StringDate=g.键,
最大风速=g.Max(入口=>入口风速),
最大室外温度=g.Max(入口=>入口室外温度)
}
).ToList().ForEach(Console.WriteLine);
}
公开课入学
{
公共日期时间日期{get;set;}
public int_Temp{get;set;}
公共内部风速{get;set;}
公共重写字符串ToString()
{
返回string.Format(“日期:{0},室外温度:{1},风速:{2}”,日期,室外温度,风速);
}
}
}
课程计划
{
静态void Main(字符串[]参数)
{
var entries=新列表()
{
{新条目{Date=DateTime.UtcNow,室外温度=10,风速=5},
{新条目{Date=DateTime.UtcNow,室外温度=5,风速=10},
{新条目{Date=DateTime.UtcNow.AddDays(-1),室外温度=15,风速=7}}
};
(e)在条目中
按e.Date.ToSortDateString()将e分组为g
选择
刚出现的
{
StringDate=g.键,
最大风速=g.Max(入口=>入口风速),
最大室外温度=g.Max(入口=>入口室外温度)
}
).ToList().ForEach(Console.WriteLine);
}
公开课入学
{
公共日期时间日期{get;set;}
public int_Temp{get;set;}
公共内部风速{get;set;}
公共重写字符串ToString()
{
返回string.Format(“日期:{0},室外温度:{1},风速:{2}”,日期,室外温度,风速);
}
}
}
您的date\u recorded
列实际上是某种日期时间,您正在尝试按天对其进行分组(删除时间信息),对吗?原则上我不喜欢将日期转换为字符数据,但我不认为SQLServer只有一个简单的“日期”类型(实际上更具代表性,但是…)。既然你无论如何都放弃了索引,我会尝试做一些事情,比如得到0001-01-01和列之间的天数差。特别是因为这种格式不会像您期望的那样进行排序/分组(只有两位数的年份?),我想我会重新创建数据库,因为SQL Server确实有一个我应该从一开始就使用的日期数据类型!那么,等等,你是只想要日期,还是最好实际存储时间戳?存储最适合的数据。如果您想按日期对其进行分组,那么将其转换为日期以进行分组(有可用的优化,但我会从“正确”行为开始)。如果您只想删除时间组件,那么为什么不尝试将date\u recorded
转换为date
类型,该类型只有日期组件。例如:SELECT CAST(date\u recorded AS date)
。您的date\u recorded
列实际上是某种日期时间,您正试图按天对其进行分组(删除时间信息),对吗?原则上我不喜欢将日期转换为字符数据,但我不认为SQLServer只有一个简单的“日期”类型(实际上更具代表性,但是…)。既然你无论如何都放弃了索引,我会尝试做一些事情,比如得到0001-01-01和列之间的天数差。特别是因为这种格式不会像您期望的那样进行排序/分组(只有两位数的年份?),我想我会重新创建数据库,因为SQL Server确实有一个我应该从一开始就使用的日期数据类型!那么,等等,你是只想要日期,还是最好实际存储时间戳?存储最适合的数据。如果您想按日期对其进行分组,那么将其转换为日期以进行分组(有可用的优化,但我会从“正确”行为开始)。如果您只想删除时间组件,那么为什么不尝试将date\u recorded
转换为date
类型,该类型只有日期组件。例如:选择CAST(日期记录为日期)
。