Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
Топик располагается на нескольких страницах: 1 2      [все]
 Как можно из входящего параметра с типам VARCHAR получить дату с временем  [new]
amireyev
Member

Откуда:
Сообщений: 102
Добрый вечер!
Входящий параметр может быть приходит разными типами. Из за этого сделал тип VARCHAR (p_param IN VARCHAR2).
Но если приходит параметр DATE, то дата конвертируется без времени.
Как можно получить входящий параметр с временем.


CREATE OR REPLACE PROCEDURE TST (p_param IN VARCHAR2)
AS
BEGIN
DBMS_OUTPUT.PUT_LINE (p_param);
END;


BEGIN
TST (SYSDATE);
END;

результат
08-FEB-19

Нужен результат 08-FEB-19 18:44:00
8 фев 19, 15:45    [21804509]     Ответить | Цитировать Сообщить модератору
 Re: Как можно из входящего параметра с типам VARCHAR получить дату с временем  [new]
123йй
Member

Откуда:
Сообщений: 1477
amireyev,

alter SESSION set NLS_DATE_FORMAT
8 фев 19, 15:58    [21804523]     Ответить | Цитировать Сообщить модератору
 Re: Как можно из входящего параметра с типам VARCHAR получить дату с временем  [new]
Stax
Member

Откуда: Ukraine,Lviv
Сообщений: 1597
amireyev,

перегрузка

....
stax
8 фев 19, 16:01    [21804532]     Ответить | Цитировать Сообщить модератору
 Re: Как можно из входящего параметра с типам VARCHAR получить дату с временем  [new]
Elic
Member

Откуда: 1984. Выбраковка финно-угром продолжается. КЯЗ
Сообщений: 28679
Stax
перегрузка
Это named unit
8 фев 19, 16:06    [21804546]     Ответить | Цитировать Сообщить модератору
 Re: Как можно из входящего параметра с типам VARCHAR получить дату с временем  [new]
amireyev
Member

Откуда:
Сообщений: 102
123йй,

пробовал

execute immediate 'alter session set nls_date_format = ''dd.mm.yyyy hh24:mi:ss''';

не помогло
8 фев 19, 16:07    [21804548]     Ответить | Цитировать Сообщить модератору
 Re: Как можно из входящего параметра с типам VARCHAR получить дату с временем  [new]
Stax
Member

Откуда: Ukraine,Lviv
Сообщений: 1597
amireyev
Но если приходит параметр DATE, то дата конвертируется без времени.
[/b]


преобразовивать явно, Вы ж знаете что пришла дата
BEGIN
TST (to_char(SYSDATE,'dd-MON-yy hh24:mi:ss','NLS_DATE_LANGUAGE=AMERICAN'));
END;

....
stax
8 фев 19, 16:07    [21804549]     Ответить | Цитировать Сообщить модератору
 Re: Как можно из входящего параметра с типам VARCHAR получить дату с временем  [new]
Stax
Member

Откуда: Ukraine,Lviv
Сообщений: 1597
Elic
Stax
перегрузка
Это named unit

я видел, придется прятать в пакет

....
stax
8 фев 19, 16:09    [21804551]     Ответить | Цитировать Сообщить модератору
 Re: Как можно из входящего параметра с типам VARCHAR получить дату с временем  [new]
amireyev
Member

Откуда:
Сообщений: 102
Stax,

к сожалению не знаю, внутри процедуры проверяю тип.
8 фев 19, 16:09    [21804552]     Ответить | Цитировать Сообщить модератору
 Re: Как можно из входящего параметра с типам VARCHAR получить дату с временем  [new]
Elic
Member

Откуда: 1984. Выбраковка финно-угром продолжается. КЯЗ
Сообщений: 28679
Stax
преобразовивать явно, Вы ж знаете что пришла дата
Поздно пить боржоми.
8 фев 19, 16:09    [21804555]     Ответить | Цитировать Сообщить модератору
 Re: Как можно из входящего параметра с типам VARCHAR получить дату с временем  [new]
Stax
Member

Откуда: Ukraine,Lviv
Сообщений: 1597
amireyev

execute immediate 'alter session set nls_date_format = ''dd.mm.yyyy hh24:mi:ss''';


автор
08-FEB-19 18:44:00


....
stax
8 фев 19, 16:10    [21804558]     Ответить | Цитировать Сообщить модератору
 Re: Как можно из входящего параметра с типам VARCHAR получить дату с временем  [new]
amireyev
Member

Откуда:
Сообщений: 102
Stax,

CREATE OR REPLACE PROCEDURE TST (p_Date IN VARCHAR2)
AS
BEGIN

execute immediate 'alter session set nls_date_format = ''dd.mm.yyyy hh24:mi:ss''';
DBMS_OUTPUT.PUT_LINE (p_Date);
END;


BEGIN
TST (SYSDATE);
END;

Результат 08-FEB-19

Если запускаю

BEGIN
execute immediate 'alter session set nls_date_format = ''dd.mm.yyyy hh24:mi:ss''';
TST (SYSDATE);
END;

то результат правильный
08.02.2019 19:16:10.

Вызов процедуры делается в другой системе. Там не смогу зашить
execute immediate 'alter session set nls_date_format = ''dd.mm.yyyy hh24:mi:ss''';

Есть еще варианты?
8 фев 19, 16:18    [21804575]     Ответить | Цитировать Сообщить модератору
 Re: Как можно из входящего параметра с типам VARCHAR получить дату с временем  [new]
-2-
Member

Откуда:
Сообщений: 14350
amireyev
Есть еще варианты?
Не изобретать ходуль на колесиках.
8 фев 19, 16:21    [21804579]     Ответить | Цитировать Сообщить модератору
 Re: Как можно из входящего параметра с типам VARCHAR получить дату с временем  [new]
MazoHist
Member

Откуда:
Сообщений: 65
amireyev
Добрый вечер!
Входящий параметр может быть приходит разными типами. Из за этого сделал тип VARCHAR (p_param IN VARCHAR2).

Вызывающие что передают в итоге? ANYDATA
8 фев 19, 16:21    [21804581]     Ответить | Цитировать Сообщить модератору
 Re: Как можно из входящего параметра с типам VARCHAR получить дату с временем  [new]
amireyev
Member

Откуда:
Сообщений: 102
-2-,

)))))))
8 фев 19, 16:22    [21804582]     Ответить | Цитировать Сообщить модератору
 Re: Как можно из входящего параметра с типам VARCHAR получить дату с временем  [new]
Stax
Member

Откуда: Ukraine,Lviv
Сообщений: 1597
amireyev
Есть еще варианты?

создать процедуру в пакете можете?

....
stax
8 фев 19, 16:25    [21804589]     Ответить | Цитировать Сообщить модератору
 Re: Как можно из входящего параметра с типам VARCHAR получить дату с временем  [new]
alex-ls
Member

Откуда: Иркутская обл - Пенза - Москва
Сообщений: 6485
так почему явно нельзя сделать TO_CHAR?
8 фев 19, 16:26    [21804590]     Ответить | Цитировать Сообщить модератору
 Re: Как можно из входящего параметра с типам VARCHAR получить дату с временем  [new]
alex-ls
Member

Откуда: Иркутская обл - Пенза - Москва
Сообщений: 6485
Можно сделать 2 процедуры для даты и для строки
8 фев 19, 16:27    [21804592]     Ответить | Цитировать Сообщить модератору
 Re: Как можно из входящего параметра с типам VARCHAR получить дату с временем  [new]
-2-
Member

Откуда:
Сообщений: 14350
Stax
Elic
пропущено...
Это named unit
я видел, придется прятать в пакет
Не обязательно
SQL> alter session set nls_date_format='"*"';

Session altered.

SQL> select sysdate from dual;

S
-
*

SQL> select test1(sysdate) x from dual;

X
--------------------------------------------------------------------------------
date is 2019-02-08 16:32:12

SQL> select test1('abc') x from dual;

X
--------------------------------------------------------------------------------
str is "abc"
8 фев 19, 16:34    [21804603]     Ответить | Цитировать Сообщить модератору
 Re: Как можно из входящего параметра с типам VARCHAR получить дату с временем  [new]
Stax
Member

Откуда: Ukraine,Lviv
Сообщений: 1597
-2-
SQL> alter session set nls_date_format='"*"';

я так понимаю amireyev не может выдать alter session до вызова TST

если б можно было б то 21804523

зы
просто интересно если * и алтер можно,
то как передать не sysdate?

....
stax
8 фев 19, 16:40    [21804618]     Ответить | Цитировать Сообщить модератору
 Re: Как можно из входящего параметра с типам VARCHAR получить дату с временем  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 17095
amireyev
Входящий параметр может быть приходит разными типами. Из за этого сделал тип VARCHAR (p_param IN VARCHAR2).


Используйте параметры подходящих типов.
Не полагайтесь на неявное преобразование.
8 фев 19, 16:41    [21804623]     Ответить | Цитировать Сообщить модератору
 Re: Как можно из входящего параметра с типам VARCHAR получить дату с временем  [new]
amireyev
Member

Откуда:
Сообщений: 102
Stax,

Процедура на нашей стороне, вызов делает другая система, и там не всегда приходит дата.
Качества данных хромает.
8 фев 19, 16:43    [21804626]     Ответить | Цитировать Сообщить модератору
 Re: Как можно из входящего параметра с типам VARCHAR получить дату с временем  [new]
-2-
Member

Откуда:
Сообщений: 14350
Stax
просто интересно если * и алтер можно,
то как передать не sysdate?
Скоропалительные выводы о роли *
SQL> select test1('*') x from dual;

X
--------------------------------------------------------------------------------
str is "*"

SQL> select test1(sysdate-1) from dual;

TEST1(SYSDATE-1)
--------------------------------------------------------------------------------
date is 2019-02-07 16:43:13
8 фев 19, 16:44    [21804629]     Ответить | Цитировать Сообщить модератору
 Re: Как можно из входящего параметра с типам VARCHAR получить дату с временем  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 17095
amireyev
там не всегда приходит дата.

Вот и используйте те типы, которые приходят.
Не надо пытаться изобрести велосипед на varchar2 - он изначально нерабочий
8 фев 19, 16:56    [21804650]     Ответить | Цитировать Сообщить модератору
 Re: Как можно из входящего параметра с типам VARCHAR получить дату с временем  [new]
amireyev
Member

Откуда:
Сообщений: 102
andrey_anonymous,

ок, спасибо!
8 фев 19, 16:58    [21804658]     Ответить | Цитировать Сообщить модератору
 Re: Как можно из входящего параметра с типам VARCHAR получить дату с временем  [new]
Да ну
Member

Откуда: Первопрестольная
Сообщений: 211
-2-,
-2-
Stax
пропущено...
я видел, придется прятать в пакет
Не обязательно
SQL> ...
SQL> select test1(sysdate) x from dual;
SQL> ...
SQL> select test1('abc') x from dual;
SQL> ...

Заинтриговал
8 фев 19, 19:26    [21804805]     Ответить | Цитировать Сообщить модератору
 Re: Как можно из входящего параметра с типам VARCHAR получить дату с временем  [new]
Elic
Member

Откуда: 1984. Выбраковка финно-угром продолжается. КЯЗ
Сообщений: 28679
Да ну
Заинтриговал
Недокументированная методика
9 фев 19, 07:12    [21805056]     Ответить | Цитировать Сообщить модератору
 Re: Как можно из входящего параметра с типам VARCHAR получить дату с временем  [new]
-2-
Member

Откуда:
Сообщений: 14350
Да ну
Заинтриговал
Подсказка:
SQL> desc test1
ERROR:
ORA-24332: invalid object type
9 фев 19, 18:52    [21805352]     Ответить | Цитировать Сообщить модератору
 Re: Как можно из входящего параметра с типам VARCHAR получить дату с временем  [new]
Да ну
Member

Откуда: Первопрестольная
Сообщений: 211
-2-
Да ну
Заинтриговал
Подсказка:
SQL> desc test1
ERROR:
ORA-24332: invalid object type

Ясно, спасибо.
11 фев 19, 12:50    [21806286]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: 1 2      [все]
Все форумы / Oracle Ответить