Форум программистов, компьютерный форум, киберфорум
PostgreSQL
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
18 / 18 / 1
Регистрация: 30.03.2009
Сообщений: 149

функция isInDST?

27.04.2009, 05:33. Показов 1573. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет!
У кого-нибудь есть опыть написания функции isInDST для постгреса?
Мне бы знать, находится ли current_timestamp в летнем времени, или нет. Причём не просто сравнить с границами [посл. воскр. марта; посл. воскр. октября], а получать бы эту инфу от ОС, ведь может сервак вообще не использует переходы.

Добавлено через 1 час 56 минут 27 секунд

В общем я решил воспользоваться вот чем:
Oracle 11 SQL
1
2
3
4
5
> SELECT 'epoch'::timestamptz  + '1238288399 sec'::INTERVAL;
2009-03-29 02:59:59+02
 
> SELECT 'epoch'::timestamptz  + '1238288400 sec'::INTERVAL;
2009-03-29 04:00:00+03
Функция:
Oracle 11 SQL
1
2
3
4
5
6
7
8
9
10
CREATE OR REPLACE FUNCTION isInDST(TIMESTAMP WITH TIME ZONE) RETURNS BOOLEAN AS
$_$
        SELECT ( EXTRACT(TIMEZONE_HOUR   FROM 'epoch'::timestamptz  + '1238288400 sec'::INTERVAL) * 60 
               + EXTRACT(TIMEZONE_MINUTE FROM 'epoch'::timestamptz  + '1238288400 sec'::INTERVAL) 
               ) 
               = 
               ( EXTRACT(TIMEZONE_HOUR   FROM $1) * 60 
               + EXTRACT(TIMEZONE_MINUTE FROM $1) 
               );
$_$ LANGUAGE SQL;
Тест:
Oracle 11 SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
testdb=# CREATE OR REPLACE FUNCTION isInDST(TIMESTAMP WITH TIME ZONE) RETURNS BOOLEAN AS
testdb-# $_$
testdb$#         SELECT ( EXTRACT(TIMEZONE_HOUR   FROM 'epoch'::timestamptz  + '1238288400 sec'::INTERVAL) * 60 
testdb$#                + EXTRACT(TIMEZONE_MINUTE FROM 'epoch'::timestamptz  + '1238288400 sec'::INTERVAL) 
testdb$#                ) 
testdb$#                = 
testdb$#                ( EXTRACT(TIMEZONE_HOUR   FROM $1) * 60 
testdb$#                + EXTRACT(TIMEZONE_MINUTE FROM $1) 
testdb$#                );
testdb$# $_$ LANGUAGE SQL;
CREATE FUNCTION
testdb=# SELECT isInDST(CURRENT_TIMESTAMP);                                             
 isindst 
---------
 t
(1 ROW)
 
testdb=# SELECT isInDST('epoch'::timestamptz  + '1238288399 sec'::INTERVAL);            
 isindst 
---------
 f
(1 ROW)
 
testdb=# SELECT isInDST('epoch'::timestamptz  + '1238288400 sec'::INTERVAL);            
 isindst 
---------
 t
(1 ROW)
Честно говоря искомая функция (isInDST) мне нужна оч. быстрая, а в оптимальности скорости написаной функции я сомневаюсь...
Кроме того, в некоторых странах (кажись, Канады всякие) правила перехода на/с летнего времени отличаются, и рубежные времена там другие. Соответственно, эта функция не будет работать там.

Конструктивная критика и альтернативные варианты решения приветствуются.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
27.04.2009, 05:33
Ответы с готовыми решениями:

Функция удаления текста в скобках [2], непосредственно функция + 12кб вложений
Доброго времени суток, случилось так, что пришлось работать с с-строками (лаба, угу), в которой нужно удалить весь текст в скобках,...

Перегрузка операций: friend-функция или функция-член класса
Здравствуйте, меня интересует вопрос, в чем разница при перегрузке операторов через operator и friend. Вот к примеру такой код. class...

Функция sqrt: существует более одного экземпляра. Функция перегруженная
#include <iostream> #include <math.h> #include <iomanip> using namespace std; int main(){ float s, p; int c, a; s=0; ...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
27.04.2009, 05:33
Помогаю со студенческими работами здесь

Выясните, сохраняет ли булева функция 0, 1, является ли функция линейной, монотонной, само двойственной?
Помогите пожалуйста!!! Булева функция задана вектором значений F(x)=(1001) Выясните, сохраняет ли эта функция 0, 1, является ли эта...

Какую библиотеку надо подключать чтоб работала функция _getch() и функция cin.get()?
какую библиотеку надо подключать чтоб работала функция _getch() и функция cin.get()

Функция - Pos(s,s1). Назначение - поиск первого вхождения подстроки s1 в строку s (аналогичная функция C - strstr)
Функция - Pos(s,s1). Назначение - поиск первого вхождения подстроки s1 в строку s (аналогичная функция C - strstr).Помогите плииз

Функция нахождения всех суффиксов списка и функция mapIfMy
Добрый день. Пожалуйста, помогите решить 2 задачи: 1. Напишите функцию tails:: ->], находящую все суффиксы заданного списка....

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru