IBX, FIBPlus, UIB, ADO, .Net и прочее-прочее-прочее, в общем все, что относится к созданию приложений, работающих с InterBase, Firebird и Yaffil - клиент-серверных, трехзвенных, консольных и т.п.
Модератор: kdv
-
Zhur
- Сообщения: 125
- Зарегистрирован: 01 мар 2006, 18:17
Сообщение
Zhur » 11 апр 2006, 10:47
Добрый день...
Хочу поближе познакомиться с TIMESTAMP в FB2.0.
Конкретно - как лучше быть с региональными настройками и созданием SQL-запросов в клиентском приложении.
Думаю, что все прекрасно понимают о чем я.
Уважаемые, а у Вас нигде не имеется подобная ссылочка? Буду учиться читать

-
Merlin
- Динозавр IB/FB
- Сообщения: 1502
- Зарегистрирован: 27 окт 2004, 11:44
Сообщение
Merlin » 11 апр 2006, 13:03
Самое простое решение - не связываться с форматами вообще и передавать даты как параметры соответствующего типа, а не строки. Если по каким-то причинам это совсем уж неудобно, то либо писать на клиенте процедурку опознавания формата и переформатирования строк в один из принимаемых FB жёстких форматов и гонять строки в запросы через неё, либо насильно управлять локалью/форматом внутри приложения через WinAPI и приводить приложение к требуемой локали.
-
Zhur
- Сообщения: 125
- Зарегистрирован: 01 мар 2006, 18:17
Сообщение
Zhur » 11 апр 2006, 13:22
Merlin писал(а):Самое простое решение - не связываться с форматами вообще и передавать даты как параметры соответствующего типа, а не строки.
Как в таком случае построить запрос
SELECT * FROM MYTABLE T WHERE T.MYDATETIME BETWEEN DATETIME1 and DATETIME2
не используя хранимых процедур?
Сейчас я делаю вот так
IBQuery.SQL.Add('SELECT * FROM MYTABLE T WHERE T.MYDATETIME BETWEEN '+DateTimeToStr(var1)+' AND '+DateTimeToStr(var2)');
-
Dimitry Sibiryakov
- Заслуженный разработчик
- Сообщения: 1436
- Зарегистрирован: 15 сен 2005, 09:05
Сообщение
Dimitry Sibiryakov » 11 апр 2006, 13:29
Вот так:
SELECT * FROM MYTABLE T WHERE T.MYDATETIME BETWEEN

ATETIME1 and

ATETIME2
и потом
Query.Prepare; // где-нибудь
.....
Query.ParamByName('DATETIME1').AsDateTime := Var1;
Query.ParamByName('DATETIME2').AsDateTime := Var2;
-
Zhur
- Сообщения: 125
- Зарегистрирован: 01 мар 2006, 18:17
Сообщение
Zhur » 11 апр 2006, 13:30
УсЁ понял. Спасибо.