2014-09-20 6 views
0

Что такое универсальная версия функции Oracle SQL TO_DATE() или TO_TIMESTAMP()?Функция Oracle TO_DATE() - что такое универсальная версия?

Простая таблица, например: функция

CREATE TABLE SAMPLE 
    (
     TRUE_DATE DATE, 
     CHAR_DATE VARCHAR2(10 CHAR) 
    ); 

При использовании же TO_DATE() на дату написания в DATE и поле VARCHAR, как этот

INSERT INTO SAMPLE 
(TRUE_DATE, CHAR_DATE) 
VALUES 
(TO_DATE('1990-01-01','YYYY-MM-DD'), TO_DATE('1990-01-01','YYYY-MM-DD')); 

в Oracle он будет работать без ошибок. Как я могу написать что-то подобное, с таким же поведением, для работы во всех системах баз данных?

+5

Там не является универсальной версией, но вы можете писать разные запросы для разных баз данных и проверять вкус db в приложении и использовать правильный запрос для этого конкретного db. Не то, что вы искали, я знаю. – Mihai

+2

@Mihai: существует «универсальная» версия - та, которая определена стандартом SQL. Buf независимо от того, поддерживает ли все СУБД другой вопрос –

+0

'TO_DATE' возвращает DATE. 'TO_TIMESTAMP' возвращает TIMESTAMP. Это разные типы данных. –

ответ

2

«универсальной» версия будет дата и метка времени буквальным формат, как определено в стандарте SQL: date '2014-09-20' или timestamp '2014-09-20 22:43:03'

Но не все СУБД поддерживают, что - но больше СУБД поддерживают ANSI литералов, чем to_date()

+0

Я отмечу это как принятый ответ. Это работает на Oracle и DB2. Я попробовал. Благодарю. – shx

Смежные вопросы