oracle 两个时间相减得到是零点几的天数,怎样才能将结果转换成时间0:00:00的格式。

比如结果为0.0003125,怎样转换成对应的时长0:00:27... 比如结果为0.0003125,怎样转换成对应的时长0:00:27 展开
 我来答
DoramiHe
2018-02-14 · 知道合伙人互联网行家
DoramiHe
知道合伙人互联网行家
采纳数:25332 获赞数:59543
2011年中山职业技术学院毕业,现担任毅衣公司京东小二

向TA提问 私信TA
展开全部

有时候想在数据库中存储插入数据时的时间,比如有一条评论,我想在把评论内容存入数据库的时候把存储评论时的时间也存到数据库中。当然这个过程是自动完成的,即不需要我在业务逻辑代码中还得初始化一个Date对象然后再把这个Date对象转换为某种格式存到数据库中。
Oracle提供了时间戳数据类型Timestamp来支持这个操作。当一个字段定义成Timestamp类型时,通过在insert语句中指定value为Sysdate就可以将执行insert语句时的时间存入数据库中。例如:


然后执行查询:
Select commenttime From webcomments;
结果显示commenttime 列的值是这种样子的:18-4月 -10 03.31.06.000000 下午
这和我们的预想不太相符。我们想查询出来的时间应该是这个样子的:2010-04-18 13:10:57
这要是用to_char函数,利用它我们可以把一个日期数据转换为任何我们想要的格式。例如这样写select语句:


得到的结果是2010-04-18 15:31:06
要了解的一点是:如果单单是想存储时间的话,Oracle还提供了一种日期类型Date,使用它也可以存储插入数据时的时间,只要插入数据时也赋值为 Sysdate就可以。并且在查询时也一样可以使用to_char函数得到想要的格式。那问题就是:为什么我们要使用Timestamp类型呢?
date和Timestamp都是对日期和时间的表示,只是两种类型的精确度不同,前者精确到秒,后者精确到小数秒Timestamp数据的格式化显示和 Date数据一样。注意,to_char函数支持Date和Timestamp,但是trunc却不支持Timestamp数据类型。这已经清楚表明了在当两个时间的差别极度重要的情况下,使用Timestamp数据类型要比Date数据类型更确切。
并且:两个Date类型相减的结果是以“天”为单位的,而两个Timestamp类型相减的结果是直观的显示为“多少天+多少小时+多少分钟+多少秒+多少小数秒”。例如:


查询结果显示(多少天 多少小时 多少分钟 多少秒 多少小数秒 ):000000001 01:30:10.100000
最后,Date转换为Timestamp要使用CAST函数,例如:








推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式