Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как можно из входящего параметра с типам VARCHAR получить дату с временем / 25 сообщений из 28, страница 1 из 2
08.02.2019, 15:45
    #39771180
amireyev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как можно из входящего параметра с типам VARCHAR получить дату с временем
Добрый вечер!
Входящий параметр может быть приходит разными типами. Из за этого сделал тип 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
...
Рейтинг: 0 / 0
08.02.2019, 15:58
    #39771188
123йй
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как можно из входящего параметра с типам VARCHAR получить дату с временем
amireyev,

alter SESSION set NLS_DATE_FORMAT
...
Рейтинг: 0 / 0
08.02.2019, 16:01
    #39771195
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как можно из входящего параметра с типам VARCHAR получить дату с временем
amireyev,

перегрузка

....
stax
...
Рейтинг: 0 / 0
08.02.2019, 16:06
    #39771204
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как можно из входящего параметра с типам VARCHAR получить дату с временем
StaxперегрузкаЭто named unit
...
Рейтинг: 0 / 0
08.02.2019, 16:07
    #39771206
amireyev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как можно из входящего параметра с типам VARCHAR получить дату с временем
123йй,

пробовал

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

не помогло
...
Рейтинг: 0 / 0
08.02.2019, 16:07
    #39771207
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как можно из входящего параметра с типам VARCHAR получить дату с временем
amireyevНо если приходит параметр DATE, то дата конвертируется без времени.
[/b]

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

....
stax
...
Рейтинг: 0 / 0
08.02.2019, 16:09
    #39771209
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как можно из входящего параметра с типам VARCHAR получить дату с временем
ElicStaxперегрузкаЭто named unit
я видел, придется прятать в пакет

....
stax
...
Рейтинг: 0 / 0
08.02.2019, 16:09
    #39771210
amireyev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как можно из входящего параметра с типам VARCHAR получить дату с временем
Stax,

к сожалению не знаю, внутри процедуры проверяю тип.
...
Рейтинг: 0 / 0
08.02.2019, 16:09
    #39771211
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как можно из входящего параметра с типам VARCHAR получить дату с временем
Staxпреобразовивать явно, Вы ж знаете что пришла датаПоздно пить боржоми.
...
Рейтинг: 0 / 0
08.02.2019, 16:10
    #39771212
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как можно из входящего параметра с типам VARCHAR получить дату с временем
amireyev
execute immediate 'alter session set nls_date_format = ''dd. mm.yyyy hh24:mi:ss''';


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


....
stax
...
Рейтинг: 0 / 0
08.02.2019, 16:18
    #39771222
amireyev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как можно из входящего параметра с типам VARCHAR получить дату с временем
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''';

Есть еще варианты?
...
Рейтинг: 0 / 0
08.02.2019, 16:21
    #39771223
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как можно из входящего параметра с типам VARCHAR получить дату с временем
amireyevЕсть еще варианты?Не изобретать ходуль на колесиках.
...
Рейтинг: 0 / 0
08.02.2019, 16:21
    #39771225
MazoHist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как можно из входящего параметра с типам VARCHAR получить дату с временем
amireyevДобрый вечер!
Входящий параметр может быть приходит разными типами. Из за этого сделал тип VARCHAR (p_param IN VARCHAR2).

Вызывающие что передают в итоге? ANYDATA
...
Рейтинг: 0 / 0
08.02.2019, 16:22
    #39771226
amireyev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как можно из входящего параметра с типам VARCHAR получить дату с временем
-2-,

)))))))
...
Рейтинг: 0 / 0
08.02.2019, 16:25
    #39771230
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как можно из входящего параметра с типам VARCHAR получить дату с временем
amireyevЕсть еще варианты?
создать процедуру в пакете можете?

....
stax
...
Рейтинг: 0 / 0
08.02.2019, 16:26
    #39771231
alex-ls
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как можно из входящего параметра с типам VARCHAR получить дату с временем
так почему явно нельзя сделать TO_CHAR?
...
Рейтинг: 0 / 0
08.02.2019, 16:27
    #39771233
alex-ls
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как можно из входящего параметра с типам VARCHAR получить дату с временем
Можно сделать 2 процедуры для даты и для строки
...
Рейтинг: 0 / 0
08.02.2019, 16:34
    #39771241
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как можно из входящего параметра с типам VARCHAR получить дату с временем
StaxElicпропущено...
Это named unitя видел, придется прятать в пакетНе обязательно
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
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"
...
Рейтинг: 0 / 0
08.02.2019, 16:40
    #39771247
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как можно из входящего параметра с типам VARCHAR получить дату с временем
-2-SQL> alter session set nls_date_format='"*"';

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

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

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

....
stax
...
Рейтинг: 0 / 0
08.02.2019, 16:41
    #39771249
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как можно из входящего параметра с типам VARCHAR получить дату с временем
amireyevВходящий параметр может быть приходит разными типами. Из за этого сделал тип VARCHAR (p_param IN VARCHAR2).

Используйте параметры подходящих типов.
Не полагайтесь на неявное преобразование.
...
Рейтинг: 0 / 0
08.02.2019, 16:43
    #39771252
amireyev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как можно из входящего параметра с типам VARCHAR получить дату с временем
Stax,

Процедура на нашей стороне, вызов делает другая система, и там не всегда приходит дата.
Качества данных хромает.
...
Рейтинг: 0 / 0
08.02.2019, 16:44
    #39771255
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как можно из входящего параметра с типам VARCHAR получить дату с временем
Staxпросто интересно если * и алтер можно,
то как передать не sysdate?Скоропалительные выводы о роли *
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
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
...
Рейтинг: 0 / 0
08.02.2019, 16:56
    #39771267
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как можно из входящего параметра с типам VARCHAR получить дату с временем
amireyevтам не всегда приходит дата.
Вот и используйте те типы, которые приходят.
Не надо пытаться изобрести велосипед на varchar2 - он изначально нерабочий
...
Рейтинг: 0 / 0
08.02.2019, 16:58
    #39771271
amireyev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как можно из входящего параметра с типам VARCHAR получить дату с временем
andrey_anonymous,

ок, спасибо!
...
Рейтинг: 0 / 0
08.02.2019, 19:26
    #39771350
Да ну
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как можно из входящего параметра с типам VARCHAR получить дату с временем
-2-,
-2-Staxпропущено...
я видел, придется прятать в пакетНе обязательно
Код: plsql
1.
2.
3.
4.
5.
SQL> ...
SQL> select test1(sysdate) x from dual;
SQL> ...
SQL> select test1('abc') x from dual;
SQL> ...


Заинтриговал
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как можно из входящего параметра с типам VARCHAR получить дату с временем / 25 сообщений из 28, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]