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. tp 查询

  2. logback日志简记

    %date{HH:mm:ss.SSS} [%thread] %-5level %logger{20}:%line - %msg%n 输出: 09:54:09.657 [main] INFO  c.e. ...

  3. 24-----BBS论坛

    BBS论坛(二十四) 24.1.编辑板块 cms/js/banners.js $(function () { $('.edit-board-btn').click(function () { var ...

  4. 3-----Scrapy框架的命令行详解

    创建爬虫项目 scrapy startproject 项目名 例子如下: E:\crawler>scrapy startproject test1 New Scrapy project 'tes ...

  5. Jupyter 环境配置

    1. 找到python文件目录, 用管理员身份打开powershell python -m pip install jupyter 2. Jupyter notebook

  6. Java日志组件1---Jdk自带Logger(java.util.logging.Logger)

    最近在看日志的一些东西,发现利用JDK自带的log也可以简单的实现日志的输出,将日志写入文件的过程记录如下: 1.新建LogUtil.Java( 里面写了几个静态方法,为log设置等级.添加log控制 ...

  7. PHP jsonencode unicode 存储问题

    首先是这样的,因为输入的字符串的里面有德语的字符,如下: 当我存储到数据库之后,再用json_encode获取到数据库内的这些字符时,出问题了. 直接encode一个字符串"püüäöä&q ...

  8. Android Studio中导入v4,v7和recyclerview-v7包的方法

    概述 Android Studio中新建工程中会默认导入v7的包,即在gradle中默认配置了com.android.support:appcompat-v7:x.x.x的依赖.但是不会默认为我们配置 ...

  9. php用户注册页面利用js进行表单验证

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  10. php 关于时间的函数

    //返回1970年1月1日零点以来的秒数.    //定义为从格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数. time(); ...