Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database db2查询时间戳数据类型的奇怪行为_Database_Db2 - Fatal编程技术网

Database db2查询时间戳数据类型的奇怪行为

Database db2查询时间戳数据类型的奇怪行为,database,db2,Database,Db2,我想在db2中查询时间戳数据类型。 我把这个问题写在下面 从LASTMODIFIEDDATE=timestamp('2012-04-03 07:59:50')的示例中选择* 对于上面的查询,我没有得到任何结果,然后我尝试了 从LASTMODIFIEDDATE>timestamp('2012-04-03 07:59:50')的示例中选择* 在上面的查询中,我得到的结果与时间戳“2012-04-03 07:59:50”以及时间戳的更大值相匹配,例如“2012-04-03 08:59:50” 如果我得

我想在db2中查询时间戳数据类型。 我把这个问题写在下面

从LASTMODIFIEDDATE=timestamp('2012-04-03 07:59:50')的示例中选择*

对于上面的查询,我没有得到任何结果,然后我尝试了

从LASTMODIFIEDDATE>timestamp('2012-04-03 07:59:50')的示例中选择*

在上面的查询中,我得到的结果与时间戳“2012-04-03 07:59:50”以及时间戳的更大值相匹配,例如“2012-04-03 08:59:50”

如果我得到了'>'运算符的结果,那么为什么我没有得到'='运算符的任何结果呢? 有什么原因吗?或者我写错了问题


谢谢

否,DB2存储时间戳的完整值,包括小数秒。您可能希望将系统显示时间戳的格式更改为包含毫秒的格式

请尝试使用此选项:

SELECT * 
FROM Sample
WHERE lastModifiedDate >= TIMESTAMP('2012-04-03 07:59:50')
AND lastModifiedDate < TIMESTAMP('2012-04-03 07:59:50)' + 1 SECONDS
选择*
从样品
其中lastModifiedDate>=时间戳('2012-04-03 07:59:50')
和lastModifiedDate<时间戳('2012-04-03 07:59:50)'+1秒

除非您拥有时间戳的完整值,包括毫秒,否则您将获得一个范围-访问数据范围时,请使用“下限包含,上限独占”。

您还可以将db列的值单独截断为秒,然后使用字符串执行比较:

Select * from sample where TRUNC(LASTMODIFIEDDATE, 'SS') = '2012-04-03 07:59:50'
在DB210.5中工作。您还可以通过以下方式截断:

hour ('HH'), minute('MI'), year('YEAR' or 'YYYY'), month('MONTH' or 'MM'), Day ('DD')
例如:

Select * from sample where TRUNC(LASTMODIFIEDDATE, 'HH') = '2012-04-03 07:00:00'
Select * from sample where TRUNC(LASTMODIFIEDDATE, 'MI') = '2012-04-03 07:59:00'

时间戳包括小数秒,您的列中有吗?不,没有小数秒。@Ben::显然时间戳列显示值“2012-04-03 07:59:50”,db2是否截断小数然后存储在数据库中?谢谢@X-Zero我在尝试您的查询后得到结果::还有一个问题,24小时时钟的上限是多少,是23.59.59吗?
23:59:59.9999999
,是的(时间上没有毫秒,但这就是为什么你会使用上限)。需要注意的是,这只是DB2上这种类型的上限——其他RDBMS具有相似/相同的类型,记录到不同的分辨率,因此您不能依赖“精确”值。所以,始终使用我指定的范围,您将永远(据我所知)是好的。