时间戳的概念:它是一种时间表示方式,定义为从格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数。
下图是从linux系统中获得当前时间戳的一种方式
请点击输入图片描述
在oracle使用时间戳,一般都是为了方便计算时间差的,我们要知道oracle中的date类型想减是不能友好的得到时间的差值的。所以使用时间戳来得到两个时间差。
请点击输入图片描述
首先来看oracle中如何获得当前时间的时间戳,我们用当前时间减去计算机元年后再经过换算得到了的从1970年来到当前时间的时间戳,单位是微妙。
请点击输入图片描述
另外oracle提供了另一种便捷得到两个时间差的方式,那就是使用timestamp数据类型,它类似date类型,但是存储的时间更为精确,显示的格式:yyyy-mm-dd hh24:mi:ss.ff AM,其中ff是小数秒。
timestamp类型的时间差可读性也比上面那种好一些,可以直观看出两个时间差。
请点击输入图片描述
请点击输入图片描述
在oracle中,两个date类型的数值想减也可以转换成上述的timestamp可以的类型,这里就要介绍一个函数:numtodsinterval(n,'x'),它能将一个数值转换成timestamp那种格式的数据。但要注意:后面的参数'x'是取'day'、'minute'、'hour'完全取决于前面的单位,这样才能获得正确的时间差
请点击输入图片描述
6
最后我们介绍一个函数extract,该函数可以从timestamp类型的时间里抽取想要hour,minute等
请点击输入图片描述
和date类型一样,使用to_char函数转换一下就行了。dexter@REPO>select to_char(systimestamp,'yyyymmddhh24missFF') from dual
TO_CHAR(SYSTIMESTAMP,'YYYYMMDDHH24MISSFF')
------------------------------------------------------------------------------------------------------------------------------------------------------
20140109040325546325
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)