![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как перевести значение TDateTime в цифровой формат MS SQL? [D6, MSSQL]
Aleksandr © (2002-10-07 13:49:00)Замучился я, люди... На разных компьютерах, как ни форматируй строку с датой и временем, SQL-сервер все равно по-разному воспринимает. Сначала он в упор путал месяцы и дни, когда я добавил в ExecQuery SET DATEFORMAT mdy, он путать перестал... Зато начал нервно относиться к сепараторам. На одной машине ему не нравятся слэши, на другой - точки, на третьей - дефисы... Он прекрасно понимает на любой машине, когда ему подаешь дату в виде цифры (дельфийскому TDateTime отнимаю 2, на это моего английского в чтении хелпа хватило), но я так и не смог въехать, как ему отконвертировать в получаемое число время из Дельфийского формата... Помогите, как перевести TDateTime в DateTime!
Aleksandr (2002-10-07 14:48:00) [1]Всем спасибо!
Сорри, въехал с дробной частью... она оказывается, одинакова у обоих типов.
SQL Datatime = Delphi TDataTime-2, а остальное совпадает.
Best Before 2024: Спасибо за обстоятельный код, узнал много нового... Просто хотелось сделать минимально просто.
2 Hooch: написанная мною формула и есть конвертация, если Вы посмотрите на данные в Делфи и ЭсКуЭл, то увидите, что одна и та же цифра для даты/времени ими понимается по-разному.
LordOfSilence: ну, просто не хотелось, чтобы работа программы зависела от персональных настроек на компьютере. Это я помню, чего надо настраивать, а если будет другой программист после меня, он может долго ковыряться в поисках ошибки.
Hooch (2002-10-07 14:20:00) [2]так TDateTime и есть DateTime (вроди как double по сути), зачем конвертировать или я что то не понял ?
LordOfSilence (2002-10-07 14:16:00) [3]Aleksandr, извините, если немного невпопад:
запустите "Программа сетевого клиента SQL Server"
(client network utility, X:\WINNT\SYSTEM32).
Вкладка "Параметры библиотеки DB",
переключатель "Использовать национальные настройки".
Может это поможет?
3JIA9I CyKA (2002-10-07 14:15:00) [4]Ку?
"20021007 14:14:14.840"
Best Before 2024 (2002-10-07 14:13:00) [5]Привести к универсальному формату:
function StrSQLDateTime(D : TDateTime; Format : TSQLDateTimeFormat = dtfDateTime) : String;
begin
Result := "";
case Format of
dtfDateTime :
begin
DateTimeToString(Result, "yyyy-mm-dd hh:mm:ss", D);
Result := "{ ts """ + Result + """}";
end;
dtfDate :
begin
DateTimeToString(Result, "yyyy-mm-dd", D);
Result := "{ d """ + Result + """}";
end;
dtfTime :
begin
DateTimeToString(Result, "hh:mm:ss", D);
Result := "{ t """ + Result + """}";
end;
end;
end;
3JIA9I CyKA (2002-10-07 14:11:00) [6]МыЛо у тебя какое?
Johnmen (2002-10-07 14:05:00) [7]Передавай через параметры...