Гость
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Должна ли использоваться TimeZone функции для входных параметров? / 7 сообщений из 7, страница 1 из 1
09.01.2018, 16:42
    #39581169
Gold_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Должна ли использоваться TimeZone функции для входных параметров?
Доброго времени суток.

PostgreSQL 9.6.1 on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 4.8.2-19ubuntu1) 4.8.2, 64-bit
Функция и вызов:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
CREATE OR REPLACE FUNCTION date_test_timezone( in_last_date date DEFAULT (now())::date)
  RETURNS date AS
$BODY$	

	SELECT in_last_date;

$BODY$
  LANGUAGE sql VOLATILE
  COST 100;
ALTER FUNCTION date_test_timezone( date) SET TimeZone='-23';

SET TimeZone='Europe/Moscow';

SELECT date_test_timezone()  =  (now()  AT TIME ZONE  '-23') ::date;


Результат
--------------------
f

удалим функцию:
Код: plsql
1.
DROP FUNCTION date_test_timezone(date);




Ожидал, что к входным параметрам применится: ALTER FUNCTION date_test_timezone( date) SET TimeZone='-23';
Видимо, это не так.
Так и должно быть?
Спасибо.
...
Рейтинг: 0 / 0
09.01.2018, 17:48
    #39581205
qwwq
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Должна ли использоваться TimeZone функции для входных параметров?
Gold_,

это трудно для понимания, и запоминания.
всегд лучше проверить свои "ожидания"

помедитируйте:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
DROP FUNCTION date_test_timezone(date);



CREATE OR REPLACE FUNCTION date_test_timezone( in_last_date timestamptz DEFAULT (now())::date::timestamptz)
  RETURNS timestamptz AS
$BODY$	

	SELECT in_last_date::date::timestamptz;
	-- нотис отсюда послать надо бы
$BODY$
  LANGUAGE sql VOLATILE
  COST 100;
ALTER FUNCTION date_test_timezone( timestamptz) SET TimeZone='-23';

RESET TimeZone ; --='Europe/Moscow';

SELECT date_test_timezone()::date  , (now()  AT TIME ZONE  '-23') ::date 
,  (now()  AT TIME ZONE  '+23') ::date
, ((now()::date)  AT TIME ZONE  '-23') ::date ,  ((now()::date)  AT TIME ZONE  '+23') ::date;



т.о. я обычно проверяю руками, не доверяя "здравому смыслу"
...
Рейтинг: 0 / 0
11.01.2018, 19:49
    #39582786
Gold_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Должна ли использоваться TimeZone функции для входных параметров?
qwwq,

Спасибо. примерно с такой функцией я "помедитировал" перед началом топика.
Сейчас хотелось бы понять это законно?

qwwq я обычно проверяю руками, не доверяя "здравому смыслу"

разумно, но тяжеловато догадаться, что твой "здравый смысл" отличается от "здравого смысла" разработчиков )
...
Рейтинг: 0 / 0
11.01.2018, 21:27
    #39582839
vyegorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Должна ли использоваться TimeZone функции для входных параметров?
Gold_,

Когда вы назначаете параметр функции, роли или базе, то это значение параметра меняется на указанное в соответствующем контексте.

В вашем случае в пределах функции параметр TimeZone имеет значение '-23'. Но т.к. никаких операций, на которые этот параметр может повлиять, не производится, то эффекта нет.
...
Рейтинг: 0 / 0
12.01.2018, 17:36
    #39583436
Gold_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Должна ли использоваться TimeZone функции для входных параметров?
vyegorov,

спасибо, но честно говоря не понял.
что по Вашему должен вернуть вызов:
Код: plsql
1.
2.
3.
SET TimeZone='Europe/Moscow';

SELECT date_test_timezone() ;
...
Рейтинг: 0 / 0
12.01.2018, 18:33
    #39583477
vyegorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Должна ли использоваться TimeZone функции для входных параметров?
Gold_,

Для ф-ции в вашем варианте — время в заданной временной зоне.
В варианте qwwq (у него в ф-ции есть преобразования) разница в 23 часа будет учитываться.
...
Рейтинг: 0 / 0
15.01.2018, 13:38
    #39584391
Gold_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Должна ли использоваться TimeZone функции для входных параметров?
vyegorov,

Еще раз спасибо.
Значит входные параметры функции это не контекст функции, поэтому переменные(set) функции на них(параметры функции) не влияют.
Какое ужасное предложения ).
Не очевидненько.

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


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