Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.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
Oracle 从24小时内的字符串到时间戳_Oracle - Fatal编程技术网

Oracle 从24小时内的字符串到时间戳

Oracle 从24小时内的字符串到时间戳,oracle,Oracle,我有一个表格,其中一列以24-JUL-17的形式给我日期,另一列以hh:mm:ss的形式告诉我小时。有几个小数,但它们是24小时,而不是AM/PM,有人能告诉我如何在oracle中添加一个列,将它们组合成一个时间戳吗?下面是一个制作表的示例 WITH test_data AS ( SELECT SYSDATE date_val, '14:23:15.123' AS time_val FROM dual ) SELECT to

我有一个表格,其中一列以24-JUL-17的形式给我日期,另一列以hh:mm:ss的形式告诉我小时。有几个小数,但它们是24小时,而不是AM/PM,有人能告诉我如何在oracle中添加一个列,将它们组合成一个时间戳吗?

下面是一个制作表的示例

WITH test_data AS (
    SELECT
        SYSDATE date_val,
        '14:23:15.123' AS time_val
    FROM
        dual
) SELECT
    to_timestamp(TO_CHAR(date_val,'MM/DD/YYYY')
                   || ' '
                   || time_val,'MM/DD/YYYY HH24:MI:SS.FF3')
  FROM
    test_data
将日期强制转换为时间戳数据类型,并使用to_DSINTERVAL将时间列转换为从天到秒的时间间隔,然后将一个时间间隔添加到另一个时间间隔:

Oracle 11g R2架构设置:

问题1:

:


只需用| |连接两个输入字符串,并用TO |时间戳将其转换。格式有点复杂,我花了一段时间才弄好

CREATE TABLE mytable (mydate VARCHAR2(9), mytime VARCHAR2(20), mytimestamp TIMESTAMP);
INSERT INTO mytable (mydate, mytime) VALUES ('24-JUL-17', '22:56:47.1915010');
测试一下

SELECT TO_TIMESTAMP(mydate||mytime, 'DD-MON-YYHH24:MI:SS.FF9') FROM mytable; 
2017-07-24 22:56:47,191501000
或者,在表格中:

UPDATE mytable 
   SET mytimestamp = TO_TIMESTAMP(mydate||mytime, 'DD-MON-YYHH24:MI:SS.FF9');

欢迎来到SO。请花一些时间阅读,并用示例输入数据编辑问题,包括表列定义、预期输出以及您尝试过的内容。谢谢,谢谢!我在约会时使用的命令失败了,我不知道ff9。我还在| | |''| | | |之间添加了一个额外的空格,我认为这是不必要的。谢谢!这也帮助我用另一种字符串格式重写日期。谢谢。我还没有研究CAST,但我会用这个例子来做!
CREATE TABLE mytable (mydate VARCHAR2(9), mytime VARCHAR2(20), mytimestamp TIMESTAMP);
INSERT INTO mytable (mydate, mytime) VALUES ('24-JUL-17', '22:56:47.1915010');
SELECT TO_TIMESTAMP(mydate||mytime, 'DD-MON-YYHH24:MI:SS.FF9') FROM mytable; 
2017-07-24 22:56:47,191501000
UPDATE mytable 
   SET mytimestamp = TO_TIMESTAMP(mydate||mytime, 'DD-MON-YYHH24:MI:SS.FF9');