获取两个日期之间的最大日期/时间

获取两个日期之间的最大日期/时间

问题描述:

我想查询两个日期/时间之间的几个字段的表,并且我需要确定两个日期/时间之间的最大日期和时间。获取两个日期之间的最大日期/时间

表包含这些类型的字段: validtime | datavalue | basistime | PE1 | PE2 | T | S |盖

的validtime是日期/时间,其有效期为一个datavalue而basistime是数据值创建的日期/时间。我需要找到两个日期/时间之间的最大值(基准时间)。

这是我作为的权利,但没有成功:

SELECT validtime, datavalue, max(basistime) from ped where lid='XXXXX' and 
and pe1='H' and pe2='G' and t='C' and s='Z' and basistime>='2014-11-19 
12:00:00' and basistime<'2014-11-19 23:45:00' group by ped.validtime,   
ped.datavalue, ped.basistime; 

我也曾尝试以下操作:

SELECT validtime, datavalue, (SELECT MAX(basistime) from ped where 
lid='XXXXX' and pe1='H' and pe2='G' and t='C' and s='Z' and 
basistime>='2014-11-19 12:00:00' and basistime<'2014-11-19 23:45:00') 
from ped where lid='XXXXX' and pe1='H' and pe2='G' and t='C' and s='Z' 
and basistime>='2014-11-19 12:00:00' and basistime<'2014-11-19 23:45:00'; 

CREATE TEMPORARY TABLE temp AS SELECT basistime, validtime, datavalue, lid, 
pe1, pe2, t, s, from ped where lid='XXXXX' and pe1='H' and pe2='G' and t='C' 
and s='Z' and basistime>='2014-11-19 12:00:00' and basistime<'2014-11-19 
23:45:00' group by ped.validtime, ped.datavalue; SELECT t.validtime, 
t.datavalue from temp t where t.lid='XXXXX' and t.basistime=max(t.basistime) 
order by validtime ASC; 

CREATE TEMPORARY TABLE temp AS SELECT max(basistime), validtime, datavalue,  
lid, pe1, pe2, t, s, from ped where lid='XXXXX' and pe1='H' and pe2='G' and 
t='C' and s='Z' and basistime>='2014-11-19 12:00:00' and basistime<'2014-11-  
19 23:45:00'; SELECT t.validtime, t.datavalue from temp t where  
t.lid='XXXXX' and t.basistime=max(t.basistime) order by validtime ASC; 

我也尝试用铸造basistime文本和在两个日期间使用BETWEEN。

大多数上述查询不产生任何数据。我发布的第一个产生的数据,但日期是从2009年(显然不在我提供的两个日期之间)。

期望的结果是输出,如: validtime,datavalue,MAX(basistime)

我已阅读每个项目我能找到的计算器和其他方式,但我没有找到一个解决方案呢。提前非常感谢您的帮助。

+1

以表格形式表示您的数据的一个示例将会很有用。也许设置一个SQLfiddle? http://sqlfiddle.com/ –

如果你想最大(basistime)你不必须将此列由

SELECT validtime, datavalue, max(basistime) 
from ped 
where lid='XXXXX' 
and pe1='H' 
and pe2='G' 
and t='C' 
and s='Z' 
and basistime>='2014-11-19 12:00:00' 
and basistime<'2014-11-19 23:45:00' 
group by validtime, datavalue 

感谢这么多添加到组,每个人。结果是两个相对简单的事情的组合。正如scaisEdge提到的那样,我需要将小组的基准时间添加到小组中,并且我还缺少一些括号。这是最终版本:

SELECT validtime, datavalue, max(basistime) from ped 
where lid='XXXXX' and pe1='H' and pe2='G' and t='C' and s='Z' 
and (basistime>='2014-11-19 12:00:00' and basistime<'2014-11-19 23:45:00') 
group by validtime,datavalue,basistime 
order by validtime;