powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Преобразование даты
7 сообщений из 32, страница 2 из 2
Преобразование даты
    #38870024
m7m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvSAN_01_08Ну да, количество форматов дат ограничено по определению. 20-ти вполне хватит за глаза, особенно для моноязычных приложений.
вы это, адекватны?
если дата хранится на сервере как дата, то, допустим, одно и то же приложение, запущенное на двух компьютерах, с разными форматами данных в системе, покажут одну и ту же дату например как
dd.mm.yyyy
mm/dd/yyyy
и никаких проблем при этом у приложений не будет. Вы вообще в настройки системы на тему даты заглядывали хоть раз?

О чем вам и говорят, что форматирование дату в строку на сервере, в фиксированный формат (любой), ведет лишь к проблемам на клиенте, и ни к чему более.

И зачем столь категорично утверждать, не оставляя ни доли сомнения в правильном выборе нужного.
При осознанном выборе нет с форматированием даты на сервере никаких проблем
(мда, тоже категорично получилось, дабы исправиться добавлю) я так думаю.

зы. Ну как-то так просим сервер
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
select format_date_rus(current_date,'d.mm.yy') from rdb$database
union all
select format_date_rus(current_date,'dd.mm.yy') from rdb$database
union all
select format_date_rus(current_date,'dd.mm.yyyy') from rdb$database
union all
select format_date_rus(current_date,'Сегодня d-й день mmmm месяца года yyyy от РХ') from rdb$database
union all
select format_date_rus(current_date,'Сегодня d-й день Mmmm месяца года yyyy от РХ') from rdb$database
union all
select format_date_rus(current_date,'Данные за mmmm yyyy года') from rdb$database


и что-то такое подучаем
3.02.15
03.02.15
03.02.2015
Сегодня 3-й день февраля месяца года 2015 от РХ
Сегодня 3-й день Февраля месяца года 2015 от РХ
Данные за февраль 2015 года
...
Рейтинг: 0 / 0
Преобразование даты
    #38870042
Фотография roadster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
m7mзы. Ну как-то так просим сервер
...
и что-то такое подучаем
...
хочется аналог этого?
select to_char(sysdate, 'DD.MM.YY')
from dual
union
select to_char(sysdate, 'DD.MM.YYYY')
from dual
union
select 'Сегодня '||to_char(sysdate, 'DD')||' день, '||to_char(sysdate, 'Month')||' месяц, '||to_char(sysdate, 'YYYY')||' год от РХ'
from dual
union
select 'Сегодня '||to_char(sysdate, 'DD')||' день, '||to_char(sysdate, 'month')||' месяц, '||to_char(sysdate, 'YYYY')||' год от РХ'
from dual

ЗЫ ну и на выходе
03.02.15
03.02.2015
Сегодня 03 день, Февраль месяц, 2015 год от РХ
Сегодня 03 день, февраль месяц, 2015 год от РХ
...
Рейтинг: 0 / 0
Преобразование даты
    #38870046
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если очень хочется, то можно и самому написать. Для экспорта напрямую в инородные форматы использую это. Делов-то на пару минут...

Код: pascal
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.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
// JCL_DEBUG_EXPERT_GENERATEJDBG OFF
// JCL_DEBUG_EXPERT_INSERTJDBG OFF
{$DEFINE FREE_IT}
library wad_udf;

uses
  System.SysUtils,
  ib_util;

type
    PIBDateTime = ^TIBDateTime;
    TIBDateTime = record
        Days, // Date: Days since 17 November 1858
        MSec10: Integer; // Time: Millisecond * 10 since midnigth
    end;

const // константы трансляции даты:
    MSecsPerDay10 = MSecsPerDay * 10; // миллисекунд в сутках * 10
    IBDateDelta = 15018; // разница в днях между датами Delphi 2.0 и InterBase

function DateTimeToChar(var IBDateTime: TIBDateTime; sz: PAnsiChar): PAnsiChar; cdecl; export;
var d: TDateTime;
    u: UTF8String;
    fs: TFormatSettings;
begin
    fs := TFormatSettings.Create;
    with IBDateTime do
        d := Days - IBDateDelta + MSec10 / MSecsPerDay10;
    u := FormatDateTime(UTF8String(sz), d, fs);
    Result := ib_util_malloc(Length(u)+1);
    StrCopy(Result, PAnsiChar(u));
end;

function IntegerToChar(var iLong: integer; sz: PAnsiChar): PAnsiChar; cdecl; export;
var u: UTF8String;
    fs: TFormatSettings;
begin
    fs := TFormatSettings.Create;
    u := Format(UTF8String(sz), [iLong], fs);
    Result := ib_util_malloc(Length(u)+1);
    StrCopy(Result, PAnsiChar(u));
end;

function FloatToChar(var F: Double; sz: PAnsiChar): PAnsiChar; cdecl; export;
var u: UTF8String;
    fs: TFormatSettings;
begin
    fs := TFormatSettings.Create;
    u := Format(UTF8String(sz), [F], fs);
    Result := ib_util_malloc(Length(u)+1);
    StrCopy(Result, PAnsiChar(u));
end;

function FloatToChar2(var F: Double; sz: PAnsiChar): PAnsiChar; cdecl; export;
var u: UTF8String;
    fs: TFormatSettings;
begin
    fs := TFormatSettings.Create;
    u := FormatFloat(UTF8String(sz), F, fs);
    Result := ib_util_malloc(Length(u)+1);
    StrCopy(Result, PAnsiChar(u));
end;

{$R *.res}

exports
    IntegerToChar,
    FloatToChar,
    FloatToChar2,
    DateTimeToChar;

begin
    IsMultiThread := True;
end.

...
Рейтинг: 0 / 0
Преобразование даты
    #38870056
afgm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv О чем вам и говорят, что форматирование дату в строку на сервере, в фиксированный формат (любой), ведет лишь к проблемам на клиенте, и ни к чему более.
Думаю речь идёт о форматировании даты при склейке с другим текстом (счета, отчёты, логи и пр.). Уж коли логика в хранимках, то и форматирование даты на сервер вполне допустимо.
А вот отдельные поля надо оставлять в формате даты времени и отдавать на откуп клиенту. Если ТС хочет форматировать отдельное поле, то критика тут вполне оправдана, либо у ТС-а есть очень веские причины так поступить (невозможность модификации целевой системы отображения информации, например)
...
Рейтинг: 0 / 0
Преобразование даты
    #38870209
Фотография roadster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
afgmлибо у ТС-а есть очень веские причины так поступить (невозможность модификации целевой системы отображения информации, например)судя по примерам хотения
m7mСегодня 3-й день Февраля месяца года 2015 от РХ
может быть система учёта ценностей музея или археологических находок, где значение поля может быть вроде "IV-V в.в. до н.э.", но тогда хранение даты как таковой для датирования возраста более чем сомнительно.
...
Рейтинг: 0 / 0
Преобразование даты
    #38870244
m7m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
roadsterafgmлибо у ТС-а есть очень веские причины так поступить (невозможность модификации целевой системы отображения информации, например)судя по примерам хотения
m7mСегодня 3-й день Февраля месяца года 2015 от РХ
может быть система учёта ценностей музея или археологических находок, где значение поля может быть вроде "IV-V в.в. до н.э.", но тогда хранение даты как таковой для датирования возраста более чем сомнительно.
У ТС что не знаю, а у меня просто примеры реализации.
По поводу "Сегодня 3-й день Февраля месяца года 2015 от РХ"
ну просто захотелось похвастаться показать что эта реализация может.
зы. она также понимает день недели, квартал, часы, минуты и секунды
...
Рейтинг: 0 / 0
Преобразование даты
    #38870276
Фотография roadster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
m7mУ ТС что не знаю, а у меня просто примеры реализации.я невнимательно читал топик, извиняюсь, спутал с ТС.
...
Рейтинг: 0 / 0
7 сообщений из 32, страница 2 из 2
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Преобразование даты
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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