Страница 1 из 1

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

Добавлено: 23 апр 2008, 18:07
Edward
Приветствую всех!
Проблема такова: при выполнении запроса типа

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

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

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

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

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

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

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

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

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

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

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

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

Добавлено: 24 апр 2008, 15:11
Attid
ну если сильно хочется можно через extract :roll:

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

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