От строки за 24 часа до отметки времени - PullRequest
0 голосов
/ 30 мая 2018

У меня есть таблица с одним столбцом, в котором указаны даты в форме 24-JUL-17, а в другом столбце - строка с указанием часа в формате чч: мм: ss.several_decimals, но они указаны через 24 часа, а не в AM /PM, может кто-нибудь указать мне, как я могу добавить в оракуле столбец, который объединяет их обоих в метку времени?

Ответы [ 3 ]

0 голосов
/ 31 мая 2018

CAST дата для типа данных отметки времени и использование TO_DSINTERVAL для преобразования столбца времени в DAY TO SECOND INTERVAL, а затем добавьте один к другому:

SQL Fiddle

Настройка схемы Oracle 11g R2 :

CREATE TABLE table_name (
  date_column DATE,
  time_column VARCHAR2(15)
);

INSERT INTO table_name ( date_column, time_column ) 
  VALUES ( DATE '2017-06-24', '12:34:56.789012' );

Запрос 1 :

SELECT CAST( date_column AS TIMESTAMP )
       + TO_DSINTERVAL( '+0 ' || time_column ) AS datetime
FROM   table_name

Результаты :

|                   DATETIME |
|----------------------------|
| 2017-06-24 12:34:56.789012 |
0 голосов
/ 31 мая 2018

Просто объедините обе входные строки с || и преобразуйте их с TO_TIMESTAMP.Формат немного хитрый, мне потребовалось некоторое время, чтобы понять это правильно.

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');
0 голосов
/ 30 мая 2018

Вот пример с изготовленным столом.

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...