SELECT COUNT(l.LogSeq), date_format(l.CreateDate,'%Y-%m') CreateDateByMonth FROM LOL l
WHERE l.CreateDate>='2017-1-1' AND l.CreateDate<='2017-8-16'
GROUP BY CreateDateByMonth

把数据按照月份分组获取所需要的数据SQL语句变为EF,错误的写法:

//先做基本查询
var querySql = from l in LOL
select new LOL
{
LogSeq = l.LogSeq,
CreateDate = l.CreateDate
};
//条件在基本的查询中完成
if (query.CreateDateStart != null)
{
querySql = querySql.Where(t => t.CreateDate >= query.CreateDateStart);
}
if (query.CreateDateEnd != null)
{
querySql = querySql.Where(t => t.CreateDate <= query.CreateDateEnd);
}
//然后把基本的条件过滤后的查询语句去分组
var ret = querySql.GroupBy(t => new { t.CreateDate }).Select(s => new LOL
{
LogSeq = s.Sum(m => m.LogSeq),
CreateDate = s.Key.CreateDate
});

这样没有对数据进行安月分组,如果有时分秒的时候分组失败,如果把时间类型的字段tostring(“”yyyy-MM-dd“”)又不会被linq所承认,这时候需要把时间拆成年,月,日这样的多个字段。返回列表后再去拼接形成一个日期,正确写法如下:

   //先做基本查询,这里不可以使用select  new   LogClinicDataOperationInfo这样的写法,需要匿名去写linq
var querySql = from l in _logClinicDataOperationRepository.Table
select new
{
LogSeq = l.LogSeq,
CreateDate=l.CreateDate,
Year = l.CreateDate.Value.Year,
Mounth= l.CreateDate.Value.Month,
}; //条件在基本的查询中完成
if (query.CreateDateStart != null)
{
querySql = querySql.Where(t => t.CreateDate >= query.CreateDateStart);
}
if (query.CreateDateEnd != null)
{
querySql = querySql.Where(t => t.CreateDate <= query.CreateDateEnd);
}
//然后把基本的条件过滤后的查询语句去分组,返回一条日期的年和月
var result = querySql.GroupBy(t => new { t.Year, t.Mounth }).Select(s => new LogClinicDataOperationInfo
{
Year = s.Key.Year,
Mounth = s.Key.Mounth,
Count = s.Count()
});

在写EF 时把时间格式化的做法的更多相关文章

  1. 3种 Springboot 全局时间格式化方式,别再写重复代码了

    本文收录在个人博客:www.chengxy-nds.top,技术资料共享,同进步 时间格式化在项目中使用频率是非常高的,当我们的 API 接口返回结果,需要对其中某一个 date 字段属性进行特殊的格 ...

  2. 【转】深入理解Java:SimpleDateFormat安全的时间格式化

    [转]深入理解Java:SimpleDateFormat安全的时间格式化 想必大家对SimpleDateFormat并不陌生.SimpleDateFormat 是 Java 中一个非常常用的类,该类用 ...

  3. SimpleDateFormat时间格式化存在线程安全问题

    想必大家对SimpleDateFormat并不陌生.SimpleDateFormat 是 Java 中一个非常常用的类,该类用来对日期字符串进行解析和格式化输出,但如果使用不小心会导致非常微妙和难以调 ...

  4. SimpleDateFormat安全的时间格式化

    SimpleDateFormat安全的时间格式化 想必大家对SimpleDateFormat并不陌生.SimpleDateFormat 是 Java 中一个非常常用的类,该类用来对日期字符串进行解析和 ...

  5. 关于SimpleDateFormat安全的时间格式化线程安全问题

    想必大家对SimpleDateFormat并不陌生.SimpleDateFormat 是 Java 中一个非常常用的类,该类用来对日期字符串进行解析和格式化输出,但如果使用不小心会导致非常微妙和难以调 ...

  6. JavaScript日期时间格式化函数

    这篇文章主要介绍了JavaScript日期时间格式化函数分享,需要的朋友可以参考下 这个函数经常用到,分享给大家. 函数代码: //格式化参数说明: //y:年,M:月,d:日,h:时,m分,s:秒, ...

  7. 【转载】关于SimpleDateFormat安全的时间格式化线程安全问题

    想必大家对SimpleDateFormat并不陌生.SimpleDateFormat 是 Java 中一个非常常用的类,该类用来对日期字符串进行解析和格式化输出,但如果使用不小心会导致非常微妙和难以调 ...

  8. (转)关于SimpleDateFormat安全的时间格式化线程安全问题

    想必大家对SimpleDateFormat并不陌生.SimpleDateFormat 是 Java 中一个非常常用的类,该类用来对日期字符串进行解析和格式化输出,但如果使用不小心会导致非常微妙和难以调 ...

  9. 关于EasyUI DataGrid行编辑时嵌入时间控件

    本人做一个名为“安徽中控”项目时,为快速开发基础数据增删改模块,遂采用EasyUIDatagrid将所有增删改查的操作都集中于表格中,并且所有增删改查操作都集中于泛型对象,从而不必为每个表写具体的增删 ...

随机推荐

  1. day26 网络通讯的整个流程

    一.网络通信原理 1.  互联网的本质就是一系列的网络协议 2.  互联网协议按照功能不同分为osi七层或tcp/ip五层或tcp/ip四层 各层的功能简述: [1]物理层:主要定义物理设备标准,如网 ...

  2. Ubuntu14上安装Mongo3.2

    1. 安装 sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys D68FA50FEA312927 echo "deb ...

  3. Observable Flowable Test

    package com.test.rxjava; import java.time.Duration; import java.time.Instant; import java.util.Linke ...

  4. jquery插件分页

    收藏地址: http://www.jq22.com/yanshi5697

  5. android Activity启动过程(四)startActivityUncheckedLocked

    final int startActivityUncheckedLocked(ActivityRecord r, ActivityRecord sourceRecord, IVoiceInteract ...

  6. cout和printf不能混用

    1.两者的缓存机制不同:printf无缓冲区,而std::cout有 (其实printf也是有缓冲区的,https://blog.csdn.net/ithzhang/article/details/6 ...

  7. [转]显示农历日期的JS

    本文转自:http://blog.sina.com.cn/s/blog_47377e77010009xc.html <!DOCTYPE HTML PUBLIC "-//W3C//DTD ...

  8. SharePreferences的用法

    1.创建 sharepreferences的方法: 首先创建该对象: 例如:(注意现在后面的模式7.0可以使用的只有 MODE_PRIVATE,其他全过时了 ) SharedPreferences s ...

  9. socket编程(一)

    因为下载器涉及到socket的知识,就花了一天学习了.因为时间原因分成几部分.(这里记录上的是基于Windows平台的) #include <stdio.h> #include <w ...

  10. jQuery.hover() 函数详解

    hover()函数用于为每个匹配元素的hover事件绑定处理函数. hover事件就是鼠标悬停事件.此外,你还可以额外传递给事件处理函数一些数据. 此外,你可以为同一元素多次调用该函数,从而绑定多个事 ...