将存储在oracle数据库中的varchar时间转换为时间?和roudoff秒?

时间:2016-03-04 09:58:15

标签: oracle datetime

我想将在数据库中存储为VARCHAR的时间转换为datetime,然后将秒数舍入为分钟。现在我在我的数据库中记录为“01:57:45”作为VARCHAR数据类型,我想将其转换为Datetime,然后舍入秒部分时间。 请帮助我, 我写了以下查询只是为了检索VARCHAR形式的时间。请给我相同的解决方案

SELECT WORK_COMPLETION_TIME FROM WORKASSIGNMENT

1 个答案:

答案 0 :(得分:1)

为了得到今天的日期时间(四舍五入到最接近的分钟):

Oracle安装程序

CREATE TABLE WorkAssignment( Work_Completion_Time ) AS
SELECT '01:57:45' FROM DUAL;

<强>查询

SELECT ROUND(
        TO_DATE(
          TO_CHAR( SYSDATE, 'YYYYMMDD' ) || Work_Completion_Time,
          'YYYYMMDDHH24:MI:SS'
         ),
        'MI'
       ) AS rounded_time
FROM   WorkAssignment

<强>输出

(格式取决于您的NLS_DATE_FORMAT设置,因为它返回DATE

ROUNDED_TIME
-------------------
2016-03-04 01:58:00

查询 - 只需返回舍入的时间字符串

SELECT TO_CHAR(
         ROUND(
           TO_DATE( Work_Completion_Time, 'HH24:MI:SS' ),
           'MI'
         ),
         'HH24:MI:SS'
       ) AS rounded_time
FROM   WorkAssignment

<强>输出

ROUNDED_TIME
------------
01:58:00