SQL查询时,根据日期范围查询周

周数据会有weekbegin和weekend两个字段,用来描述周的开始日期和结束日期。

现在项目中的日历控件不支持周查询,只支持日期查询,所以目前面临的问题是,根据时间范围,查询周。

最终sql如下:

select uid,weekbegin,weekend,sum(activeCount),sum(newCount) from rv_Cloud_SummaryWeek where (date(weekbegin)>=date(‘2018-05-01‘) and date(weekbegin)<=‘2018-05-31‘) or (date(weekend)>=date(‘2018-05-01‘) and date(weekend)<=date(‘2018-05-31‘)) or (date(weekbegin)<=(‘2018-05-01‘) and date(weekend)>=date(‘2018-05-31‘))  group by uid,weekbegin,weekend

  

使用的穷举法做的处理,即罗列出所有的情况进行or查询。

简单说一下逻辑思考过程:

周开始时间结束时间的字段是weekbegin,weekend

页面查询的时间范围是begindate和enddate

那么根据这四个时间字段的顺序可能是:

weekbegin    weekend    begindate    enddate

1                   2                3                   4

1                   3                2                   4

1                  4                 2                   3

2                  3                 1                   4

3                  4                 1                   2

最终得出以上SQL

原文地址:https://www.cnblogs.com/hark0623/p/9046342.html

时间: 2024-11-05 23:23:15

SQL查询时,根据日期范围查询周的相关文章

在SQLite Expert上用日期类型字段作为条件查询时注意日期的格式化

经验之谈: 情况一:没有查询结果 select * from t_Records where 1==1 and R_CheckInTime > '2015-7-12 18:47:00' and R_CheckInTime < '2015-7-18 18:48:00' 情况二:得到正确结果 select * from t_Records where 1==1 and R_CheckInTime > '2015-07-12 18:47:00' and R_CheckInTime < '

DB查询分析器7.01新增的周、月SQL执行计划功能

马根峰              (广东联合电子服务股份有限公司, 广州 510300) 1      引言   中国本土程序员马根峰(CSDN专访马根峰:海量数据处理与分析大师的中国本土程序员)推出的个人作品----万能数据库查询分析器,中文版本DB 查询分析器.英文版本<DB Query Analyzer>.它具有强大的功能.友好的操作界面.良好的操作性.跨越各种数据库平台乃至于EXCEL和文本文件. 你可以通过它 ① 查询ODBC数据源(包括世面上所有的数据库.TXT/CSV文件.EXC

LINQ to SQL 运行时动态构建查询条件

在进行数据查询时,经常碰到需要动态构建查询条件.使用LINQ实现这个需求可能会比以前拼接SQL语句更麻烦一些.本文介绍了3种运行时动态构建查询条件的方法. 本文中的例子最终实现的都是同一个功能,从Northwind数据库Customers表中搜索出CompanyName列带有keywords中任意元素的项.keywords是个字符串数组,该数组长度在编译时是不确定的.思路及方法说明写在代码注释中. 1.表达式树 1   public static IEnumerable<Customers> 

sql查询时增加自动编号

查询时加序号  a:没有主键的情形: Select   identity(int,1,1)   as   iid,*   into   #tmp   from   TableName   Select   *   from   #tmp   Drop   table   #tmp b:有主键的情形: Select   (Select   sum(1)   from   TableName   where   KeyField   <=   a.KeyField)   as   iid,*   f

sql查询时加上行号

sql查询时加上行号 sql查询的时候有时候要加上行号,这里做个备忘~ 1(建议采用),select row_number() over (order by col1) as no,newid() as id,*from Table1order by col1 2,select no=identity(int,1,1),newid() as id,* into  #temptable From  Table1order by col1Select * From #temptableDrop Ta

一对一关联查询时使用relation连贯操作查询后,调用getLastSql()方法输出的sql语句

如题: 一对一关联查询时使用relation连贯操作查询后,调用getLastSql()方法输出的sql语句不是一条关联查询语句. 例如: $list = $db->relation(true)->where($where)->order('blogid desc')->limit($Page->firstRow.','.$Page->listRows)->select(); $sql = $db->getLastSql(); 输出的sql语句为: SELE

用SQL server导出到oracle,查询时提示“表或视图不存在ORA-00942”错误

用SQL server2005的导出工具,将数据导出表到oracle,表名称里看到有这张表了,但查询或删除时都提示“ORA-00942表或者试图不存在”的错误,上网查了一下,是如下原因: “查询或删除名称存在的表时,却提示不存在,你看看在user_tables里这几个表名是小写吗? 那说明你建表的时候肯定带引号了,请select的时候也带上引号.例如:select * from "tableName",可以看出如果在SQLserver中,如果表名是小写的,那导入到oracle时,建表时

sql 关于查询时 出现的 从数据类型 varchar 转换为 numeric 时出错 的解决方法。

出现这种问题 一般是查询时出现了 varchar 转 numeric 时出了错  或varchar字段运算造成的 解决方法: 让不能转的数不转换就可以了 sql的函数有个isNumeric(参数) 用来转换数字 如果成功反回1 不成功 则反回0 例: select case when isNumeric(字段)=0 then 0 else 字段运算 end from 表名 declare @参数 varchar(32) set @参数='abc' select case when isNumer

sql in(1,2,3)参数化查询,错误在将 varchar 值 &#39;1,2,3,4&#39; 转换成数据类型 int 时失败

解决办法 string userIds = "1,2,3,4";using (SqlConnection conn = new SqlConnection(connectionString)){ conn.Open(); SqlCommand comm = new SqlCommand(); comm.Connection = conn; comm.CommandText = string.Format("select * from Users(nolock) where U

SQL语句技巧:查询时巧用OR实现逻辑判断

首先看以下SQL逻辑语句块: DECLARE @fieldname varchar(50) DECLARE @fieldvalue nvarchar(100) SET @fieldname='chassisno' --这里可传入chassisno,plateno,owner,contacttelno其中之一或不传 SET @fieldvalue='Zuowenjun' IF @fieldname = 'chassisno' BEGIN SELECT * FROM TABLENAME WHERE