Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 24.10.2010, 13:25
koszh2007 koszh2007 вне форума
Прохожий
 
Регистрация: 24.03.2010
Сообщения: 11
Репутация: 10
По умолчанию время в БД

Доброе времени суток!!! У меня возникла такая проблема: мне необходимо записывать в таблицу БД системное время по Гринвичу с точностью до миллисекунды. Нахожу время всё нормально, но записывается это время в БД без миллисекунд, хотя и указываю формат времени.
Код:
// функция определение фремени по гринвичу
function GetCurrentGMT: TDateTime;
var
 y: TSystemTime;
begin
  GetSystemTime(y);
  result := SystemTimeToDateTime(y);
end;

......

var  s:string;
begin

 // DateTimeToString(s,'hh:mm:ss.zzzz',GetCurrentGMT);  // переводим время в строку
  with Client.q do
  begin
    Active:=false;
    SQL.Clear;
    SQL.Add('INSERT INTO '+tablica+'( '+fld1+', '+fld2+', '+fld3+', '
    +fld4+', '+fld5+', '+fld6+') VALUES( ');
    SQL.Add(QuotedStr(massiv[0])+','+QuotedStr(massiv[1])+','
    +QuotedStr(massiv[2])+','+QuotedStr(massiv[3])+','+QuotedStr(massiv[4])
    +', :Time)');
    Params.ParamByName('Time').Value :=  FormatDateTime('hh:mm:ss.zzz', GetCurrentGMT);
    ExecSQL;
  end;
Здесь время записывается в последние поля (fld6) - тип поля TIME.
Подскажите, как сделать так чтобы время отображалось полностью с миллисекундами.
Ответить с цитированием
  #2  
Старый 24.10.2010, 17:17
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Нет в БД типа поля для формата времени с учетом миллисекунд, минимальное значение - секунда. Но никто не мешает хранить время в БД как строку, и трансформацию строки в нужное время с миллисекундами производить в программе. Вот только использовать такой способ для работы с датами через SQL уже весьма проблематично.
Можно сделать иначе. Отдельно хранить Время до секунд, а отдельно миллисекунды. Тогда никаких проблем работы с датами не ожидается.
Наконец можно просто преобразовать время в миллисекунды и хранить как большое число.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #3  
Старый 24.10.2010, 17:34
koszh2007 koszh2007 вне форума
Прохожий
 
Регистрация: 24.03.2010
Сообщения: 11
Репутация: 10
По умолчанию

Цитата:
Сообщение от Страдалецъ
Нет в БД типа поля для формата времени с учетом миллисекунд, минимальное значение - секунда. Но никто не мешает хранить время в БД как строку, и трансформацию строки в нужное время с миллисекундами производить в программе. Вот только использовать такой способ для работы с датами через SQL уже весьма проблематично.
Можно сделать иначе. Отдельно хранить Время до секунд, а отдельно миллисекунды. Тогда никаких проблем работы с датами не ожидается.
Наконец можно просто преобразовать время в миллисекунды и хранить как большое число.
Да я уже засунал время как строку. Вот перевод полностью в миллисекунды нельзя, необходимо чтобы был читаемый вид. Только вот возникает потом проблема при обработе этих данных. Например показать список значений в определенном диапозоне времени.
Ответить с цитированием
  #4  
Старый 24.10.2010, 19:48
Asinkrit Asinkrit вне форума
Местный
 
Регистрация: 29.10.2009
Сообщения: 446
Репутация: 271
По умолчанию

Я бы использовал тип DateTime для хранения времени до секунды, и тип Numeric(3,0) для милисекунд, исоответственно милисекунды сохранял отдельно, тогда все проблемы бы иссякли, и запрос можно построить и работать с данными вполне удобно.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 09:21.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter