2017-08-16 40 views
0

我正在使用Oracle 12c版本。 我有一个整数数据类型的列,它表示总分钟数。 我需要将其转换为HOURS:MINUTES格式。将整数转换为时间

有人可以建议如何做到这一点?

感谢, VENU

+0

请[编辑您的问题(https://stackoverflow.com/posts/45719693/edit),包括样本数据,预期结果,以及你已经尝试过(什么它是错的)。结果应该是什么样的数据类型?时间可以超过24小时,如果有的话会发生什么? –

+0

另外[可能是重复](https://stackoverflow.com/q/11931574/266304)。 –

回答

3

这是一种通过一系列的内置功能来完成一个相当容易的事情。

to_char(floor(field/60) || ':' || to_char(mod(field, 60), 'FM00') 

其分解

  1. 获取的小时数:to_char(floor(field/60)
    • field/60得到我们的小时
    • floor()数量确保我们不必处理小数点
    • to_char()将它转换为一个字符串,所以我们可以连接它。
  2. 添加 ':' || ':' ||
  3. 获取分钟数
    • mod(field, 60)得到的field/60
    • to_char()剩余再次转换为字符串的CONCAT步
    • 'FM00'保证我们保持领先的零。

很显然,你需要与任何在你的数据库中的字段被称为取代field

+0

感谢您提供解决方案。它的工作现在很好。 –

+0

@VenugopalSeetharaman:如果这回答了您的问题,请考虑接受它通过点击投票按钮复选标记:) – Jacobm001

0

您可以使用to_date内置函数将整数转换为有效时间。

SQL> select to_char (to_date ('2300', 'HH24MI'), 'HH:MI AM') integer_time from dual; 
+0

它只能工作12小时,我不认为AM/PM是必需的。 –