如何使用MySQL查询一段时间?
我有如下表:如何使用MySQL查询一段时间?
Fee
idFee | dateStart | dateEnd
1 | 2015-01-03 | 2015-01-20
2 | 2015-01-21 | 2015-01-24
3 | 2015-01-27 | 2015-01-28
我想获得的“费用”根据一段时间。
案例1: 例如,如果我查询的日期如下:
queryDateStart: 2015-01-04
queryDateEnd: 2015-01-23
我应该得到的“费用” 1和2,这是因为它以连接费1棘手的情况下,和2为了得到结果。
案例2: 如果我查询:
queryDateStart: 2015-01-23
queryDateEnd: 2015-01-24
我应该得到的费用2
案例3: 如果我查询:
queryDateStart: 2015-01-05
queryDateEnd: 2015-01-28
我应该没有“费用”,因为在24日和27日之间有一个漏洞。这可能是另一个棘手的情况,因为它必须连接所有日期并搜索漏洞。
有没有办法查询这个表?或者你认为我应该恢复所有的费用和PHP或JS的结果过程?
我使用下列类型的查询现在:
3210但它仅适用于一个时段,它不会管理时间两个或多个周期。
尝试在这里考虑看看: Selecting records between two date range query
两人之间的日期范围。
现在让我们移动以选择两个日期之间的记录范围 。下面是该SELECT *的SQL FROM
dt_tb
WHERE DT BETWEEN '2005-01-01' 和 '2005-12-31'
这应该做的伎俩。
不是所有...在这里,你只是使用dt_tb ...在我的表中,我必须处理时间段...不只是一个日期 – 2015-03-03 13:24:18
dt_tb只是一个表名,你可以改变它为任何你想要的。 BETWEEN date1和date2是2个日期时间段的一部分。就像tablename一样,您可以将date1和date2更改为您喜欢的每个有效日期。 – SheperdOfFire 2015-03-03 13:49:37
对不起,我的意思是“dt”...只是一个日期...而我想查询一段时间...查询日期很简单 – 2015-03-03 13:55:52
有假设你正在使用date
列类型,一对夫妇不同的方式
SELECT idFee, dateStart, dateEnd
FROM Fee
WHERE dateStart >= '2015-04-01'
AND dateEnd <= '2015-24-01'
或
SELECT idFee, dateStart, dateEnd
FROM Fee
WHERE dateStart BETWEEN '2015-04-01' AND '2015-24-01'
您的解决方案无法连续两个时间段工作(情况1) – 2015-03-03 13:41:44
@leanyomartinet努力理解你的逻辑是什么,有查询选择在查询开始日期后有start dater的行__OR__查询结束日期之前的结束日期? – martincarlin87 2015-03-03 13:49:51
这个想法是使用一段时间来查询连续的时间段。你的第一个解决方案的作品,但只是我已经描述的情况2和3 ...最难解决的是CASE 1 – 2015-03-03 13:54:01
你有没有尝试什么吗? – Strawberry 2015-03-03 13:17:15
从我所看到的,你的日期格式与mysql默认使用的日期格式不同。你的表结构是什么,你用什么查询? – SheperdOfFire 2015-03-03 13:18:19
@Strawbery是的,它只是编辑后... FIA2008不... ...我可以使用DATE_FORMAT,它很酷, – 2015-03-03 13:23:00