项目中一个成品价格表,每条记录中的价格有一个使用时间段,但是各个记录中时间段不存在交叉,
判断一段时间内的价格的算法:
数据库的价格表: productprice 列字段 开始时间点 startDate 结束时间点 endDate
查询 开始时间点 startDate0 结束时间点 endDate0
查询使用使用算法公式:
startDate <= endDate0 and endDate>=startDate0
得到时间段的价格:
应用如下:
/**
* 分页查询时使用
*
* @param <T>
* @param paginater
* @param searchCondition
* @return
*/
public <T> Paginater<T> paginate(Paginater<T> paginater, final ProductItemPriceCondition searchCondition) {
Sorter sorter = paginater.getSorter();
if (sorter.isEmpty()) {
sorter = new Sorter().asc("p.startDate");
}
LimitedList<T> limitedList = findByQuery(new QueryCreator() {
public Query createQuery(Session session) {
DynamicQuery dynamicQuery = new DynamicQuery("select distinct p from " + searchCondition.getForTypeName() + " p where (1 = 1) ");
dynamicQuery.appendIfNotNull(" and p.startDate<=:endDate ", "endDate", searchCondition.getEndDate());
dynamicQuery.appendIfNotNull(" and p.endDate>=:startDate ", "startDate", searchCondition.getStartDate());
dynamicQuery.appendIfNotNull("and p.productId=:productId ", "productId", searchCondition.getProductId());
return dynamicQuery.build(session);
}
}, paginater.getLimit(), sorter);
return paginater.fromLimitedList(limitedList);
}
分享到:
相关推荐
有时候,我们的业务可能会这样要求:某张表是动态的,他要求每隔一段时间(如:一个月)自动生成一张结构相同的新表(如:日志表Log),这是我们要判断数据库中是否存在某张表,如果没有,则新建一张表,否者直接...
在sql server 数据库中,在一段时间范围内,间隔几条数据取出一条信息的检索方法。如:时间段内“2020-10-10 00:00:00” 到“2020-10-11 00:00:00”内,间隔30秒取出一套数据方法
Batchtime表用于存储消费软件系统中的批次时间段信息,每一条记录对应着一个批次时间段。批次时间段用于记录消费软件系统中的批次操作时间,以便进行批次处理。该表的字段包括: * 批次时间段ID(primary key) * ...
主键与外键在多表中的重复出现不属于数据冗余,这是一个需要澄清的概念。真正的数据冗余是指非键字段的重复出现。在实际设计中,适度的数据冗余可以帮助提高查询效率,但也需要注意控制,避免过度冗余导致存储成本...
标题中的“最新手机号段数据库,手机号码归属地数据库”指的是一个包含了大量手机号码信息的数据集,主要用于查询和分析手机号码的归属地。这样的数据库通常包括运营商信息、区号、城市、省份等,对于营销、数据分析...
在本例中,我们有一个名为“shike.mdb”的文件,这通常是一个Microsoft Access数据库文件,用于存储这些列车时刻表数据。Access数据库是一个关系型数据库管理系统,它可以组织和管理大量的结构化信息,非常适合处理...
开发一个公交安全管理系统来对数据库进行访问,可以使用C、Java等集成开发环境。 系统实现功能如下: 录入司机基本信息,如工号、姓名、性别等; 录入汽车基本信息,如车牌号、座数等; 录入司机的违章信息; 查询...
本文将详细解析Jeecms中的几个关键数据库表结构,帮助开发者更好地理解和应用Jeecms系统。 #### 二、CMS采集表(jc_acquisition) ##### 表结构说明: | 列名 | 类型 | 长度 | 小数位 | 是否允许空值 | 默认值 | ...
每个Job实例在此表中对应一条记录,Job的唯一标识由`SCHED_NAME`(调度器实例名)和`JOB_NAME`(Job名)及`JOB_GROUP`(Job组名)共同确定。 2. **QRTZ_TRIGGERS**:该表用于保存Trigger信息,包括触发时间、触发...
- **应用实例**:例如在一个员工信息系统中,员工与部门之间可能是一对多的关系(一个部门可以有多个员工),而员工与职位之间可能是一对一的关系(每个员工只有一个职位)。 #### 2. 数据库设计的高维度概念 - **...
- `ID`字段被标记为主键(Master Primary Key,MPK),主键是一个或一组字段,其值在表中是唯一的,用于唯一标识每条记录。在本例中,`ID`字段是一个整数类型,通常自增,确保每次插入新记录时自动分配唯一的ID。...
例如,一个记账凭证数据表可能包括"年月日"、"摘要"、"会计科目"、"借方金额"、"贷方金额"等字段,每条记录就代表一笔具体的经济业务。理解数据表的结构有助于会计专业学生规范地输入、处理和输出会计信息,确保数据...
在数据库管理中,有时我们需要确保数据表中的记录是唯一的,避免重复数据导致的不一致性和冗余。在SQL中,可以使用特定的查询语句来删除重复的记录,以保持数据的整洁和准确。以下是如何使用SQL语句来删除数据表中...
在数据库管理阶段中,可以根据不同的项目创建多个库,在每个库中可以根据项目需求创建不同的数据表,数据表中存放的是具体的数据。 SQL语言 SQL(Structured Query Language)是一种数据库查询和程序设计语言,...
Joomla是一个开源的内容管理系统(CMS),常用于构建网站和网络应用,它的数据库表段是存储内容、配置、用户信息等核心数据的基础。下面将详细介绍各个表段所代表的数据内容。 1. jos_banners: 该表用于存储Joomla...
这个数据库中的记录可能包括这些基本信息,以及每个号码段的归属地信息,如省份、城市和运营商。 归属地信息对于业务运营至关重要,因为它可以帮助企业了解客户的地理分布,从而制定更精准的营销策略。例如,分析...
有效时间(Valid-Time)是指数据对象在现实世界中存在的时段,即该对象在现实世界中有意义的时间段,可以表示过去、现在和未来。事务时间(Transaction-Time)则关注数据库内部操作的时间,记录了数据库状态变化的...
例如,我们可以创建一个查询来查找特定时间段内最畅销的汽车型号,或者找出购买某一车型的所有客户。此外,通过使用Access的报表功能,我们可以自定义销售报告,展示销售总额、利润、销售趋势等关键指标。 对于初学...
描述中的“2011年7月份最新火车时刻表”明确了这个数据库的时间范围,意味着它记录的是2011年7月这一时间段内火车的运行时刻信息。在那个时期,火车时刻表可能会因为季节性调整、新线路开通、维修保养等因素而有所...
在本项目中,我们主要探讨的是一个基于SQL和数据库技术的电力数据分析系统——"天津市2018年发电量查询系统"。这个数据库大作业旨在设计并实现一个能够有效存储、管理和查询天津地区2018年电力生产数据的数据库应用...