Отображение даты в вычисляемых полях

ЧАстые Вопросы и Ответы

Модераторы: kdv, CyberMax

Ответить
Edward
Сообщения: 5
Зарегистрирован: 30 мар 2006, 14:51

Отображение даты в вычисляемых полях

Сообщение Edward » 23 апр 2008, 18:07

Приветствую всех!
Проблема такова: при выполнении запроса типа

Код: Выделить всё

select
  BEG_DATE||' - '||END_DATE RANGE
from
  SOME_TABLE
в поле RANGE получаю значение '1990-01-01 - 1991-01-01',
а мне требуется '01.01.1990 - 01.01.1991'.
Есть ли в Interbase настройки (функции), управляющие форматом отображения даты?

WildSery
Заслуженный разработчик
Сообщения: 1738
Зарегистрирован: 05 июн 2006, 16:19

Сообщение WildSery » 23 апр 2008, 18:21

Серверу обычно без надобности управление форматом представления, у него немного другие задачи.
Потому - нет.

Hint: Зато есть UDF, которые с успехом могут решить такую задачу.

Merlin
Динозавр IB/FB
Сообщения: 1502
Зарегистрирован: 27 окт 2004, 11:44

Сообщение Merlin » 23 апр 2008, 18:48

WildSery писал(а):Серверу обычно без надобности управление форматом представления, у него немного другие задачи.
Потому - нет.

Hint: Зато есть UDF, которые с успехом могут решить такую задачу.
А ещё у подавляющего боьльшинства софта для разработки клиентских приложений, которые, собственно и отображают всё на свете, есть понятие вычисляемых на клиенте полей в том или ином виде. Где можно уформатироваться до полного опупения. Я вот всё жду вопросов типа - мне нужно чтоб в гриде одно из полей было красненьким, как это сделать с помощью SQL силами сервера.

Edward
Сообщения: 5
Зарегистрирован: 30 мар 2006, 14:51

Сообщение Edward » 23 апр 2008, 19:12

Merlin писал(а):Я вот всё жду вопросов типа - мне нужно чтоб в гриде одно из полей было красненьким, как это сделать с помощью SQL силами сервера.
По-моему, сарказм не уместен. Я не любитель изобретать велосипед. Если есть стандратная возможность, то почему бы ей не воспользоваться, а сейчас у меня ч/з вычисляемое поле это и организовано.

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 23 апр 2008, 19:59

Если есть стандратная возможность
стандартная возможность - это вычислить разницу дат между Date1 и Date2. Но разница дат - это НЕ ДАТА. Это интервал, причем в днях. Соответственно, как ты его будешь выводить на клиенте - твое личное дело.

насчет udf тебе правильно сказали, например тот же DateDiff, или что там в FreeUDFLib.

Merlin
Динозавр IB/FB
Сообщения: 1502
Зарегистрирован: 27 окт 2004, 11:44

Сообщение Merlin » 23 апр 2008, 21:42

kdv писал(а):
Если есть стандратная возможность
стандартная возможность - это вычислить разницу дат между Date1 и Date2.
Ему не разница дат нужна, а литеральное отражение диапазона в строке. Причём не в стандартном серверном строковом преобразовании, а в удобном. Типичная задача для TDataSet.OnCalcFields.

Merlin
Динозавр IB/FB
Сообщения: 1502
Зарегистрирован: 27 окт 2004, 11:44

Сообщение Merlin » 23 апр 2008, 21:48

Edward писал(а): По-моему, сарказм не уместен. Я не любитель изобретать велосипед. Если есть стандратная возможность, то почему бы ей не воспользоваться, а сейчас у меня ч/з вычисляемое поле это и организовано.
Стандартная возможность - это стандартный формат сервера. УДФ - это крайний случай. Нет, можно, можно. Обвешать сервак ими как новогоднюю ёлку на каждый чих, пусть напрягается, пусть потом будем чесать репу насчёт server terminated abnormally и гадать какая из УДФ кривая - сделанная собственными руками или чьими-то чужими и откуда-то скачанная, пусть будем дописывать инсталляторы и биться с админами при распространении программы, чтоб раскладывали на хосте кроме дистриьута FB dll неизвестного происхождения. Главное - не делать клиентово на клиенте.

Edward
Сообщения: 5
Зарегистрирован: 30 мар 2006, 14:51

Сообщение Edward » 24 апр 2008, 11:52

Благодарю всех за ответ. Наиболее точный ответ на вопрос дал WildSery (мне нужно было знать есть ли встоенный механизм, или нет). А насчет UDF или вычисляемых полей и так понятно :).

Attid
Спец
Сообщения: 377
Зарегистрирован: 14 ноя 2006, 09:58

Сообщение Attid » 24 апр 2008, 15:11

ну если сильно хочется можно через extract :roll:

WildSery
Заслуженный разработчик
Сообщения: 1738
Зарегистрирован: 05 июн 2006, 16:19

Сообщение WildSery » 24 апр 2008, 16:20

Attid писал(а):ну если сильно хочется можно через extract :roll:
Несколько экстрактов будут работать в разы (даже на порядок) медленнее, чем UDF.

Attid
Спец
Сообщения: 377
Зарегистрирован: 14 ноя 2006, 09:58

Сообщение Attid » 24 апр 2008, 18:54

думаю в данном случае это не важно =) с полученной строкой все равно ничего делать не будут, а если он милион записей в грид тянуть будет то и удф не поможет.

Ответить