2010-07-05 54 views
0

SQL查询我怎么能​​写在DB2中查询以下的事情:问题与DB2

当前时间戳和分贝时间戳字段之间的差值必须> = 4小时, < =24小时

回答

0

尝试以下

select * from tableName where 
       date <= DATEADD(Hour, -4, CURRENT_TIME) and 
       date date >= DATEADD(Hour, -24, CURRENT_TIME) 
+0

感谢replying.But我力GET it.Canü提供一些。简要describtion – aks 2010-07-05 05:42:21

+0

DATEADD不DB2提供的标准功能 – 2010-07-06 11:38:24

2

你真的不提供足够的信息来回答这个问题(即你想要的数据只能从过去,只有在未来,等等),但是让我们假设你想要的数据其中时间戳列( “tscolumn”)是超过4小时老不到24小时的时候:

select * 
from table t 
where t.tscolumn between current timestamp - 4 hours 
         and current timestamp - 24 hours 

如果我的假设是错误的它很容易改写这个满足您的要求。

-2
select * 
from table t 
where timestampdiff(8,char(current timestamp - time_from_table)) between 4 and 24 

这里时间戳(8, - 是指小时,下面是值不同的参数

值说明

1 Fractions of a second 
2 Seconds 
4 Minutes 
8 Hours 
16 Days 
32 Weeks 
64 Months 
128 Quarters 
256 Years 
+0

-1:你时间戳转换为char,这是完全没有必要的(并且可能会破坏减法)'TIMESTAMPDIFF()'也只返回一个_estimate_,并没有按。不要把DST这样的东西变成accou nt(天总是被认为是24小时长) - 尽管DB2可能对此没有很好的支持,但取决于版本。多个函数的使用将完全忽略任何索引。你的最后一句话是完全不透明的。你的答案格式很差....你回答了一个3岁多的问题,答案可以接受(为什么?)。 – 2014-01-01 10:48:42

+1

按照下面的链接,并检查语法TIMESTAMPDIFF http://publib.boulder.ibm.com/infocenter/dzichelp/v2r2/index.jsp?topic=%2Fcom.ibm.db2z9.doc.sqlref%2Fsrc%2Ftpc%2Fdb2z_bif_timestampdiff .htm – 2014-01-02 04:51:35

+0

您必须将减法的_result_转换为char,**不是**操作数;我严重怀疑你可以相互减去字符串......哦,不管怎么说,语句都有语法错误。我会避免一般只是你的答案,因为它不会利用任何指标和'TIMESTAMPDIFF()'只提供一个估计值(即变得更不准确更大的差异)。 OP没有明确说明足够的信息,但可以对现有答案进行改进;然而,在3岁时,没有接受的答案.... – 2014-01-02 05:40:50