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

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
Должна ли использоваться TimeZone функции для входных параметров?
    #39581205
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Должна ли использоваться TimeZone функции для входных параметров?
    #39582786
Gold_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
qwwq,

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

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

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

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

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

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

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

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

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

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


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