Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.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
SQL server使用LINQ转换日期时间_Sql_Linq_Entity Framework - Fatal编程技术网

SQL server使用LINQ转换日期时间

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 ;

我在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 ;
这将我的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(日期记录为日期)