![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
SQL запрос, бд-MS Access, по времени [D7, Access]
vantage10 © (2003-06-06 13:58:00)Я уже писал тоже самое по дате
( http://www.delphimaster.ru/cgi-bin/forum.pl?look=1&id=1053873893&n=1)
Теперь возник тот же самый вопрос по времени.
Время (WHERE Int(DateField)=#18:00:00#) подобно дате (WHERE Int(DateField)=#04/03/2003#)
не заработало.
sniknik (2003-06-07 16:34:00) [1]vantage10 (07.06.03 16:23)
сделай так
SELECT Round(DateField-Int(DateField), 16), Round(#30/12/1899 02:00:00#,16) FROM TableName
и посмотри на разницу глазами. время это же дробная часть числа, а такие числа плохо сравнивать. иногда (с некоторыми числами) не проходит даже
Fl: Double;
Fl:= 0.0357;
if Fl = 0.0357 then begin
end;
и условие ложное получается, изза этой самой разрядной сетки, переменная на самом деле будет содержать 0,0356565656475 (чтото типа этого, не обязательно это число конечно это я так, просто есть такие, сдесь обсуждалось)
vantage10 (2003-06-07 16:23:00) [2]Странно, но не получилось
sniknik (2003-06-06 15:10:00) [3]не не получается :(, вмешивается погрешность в разрядной сетке(а может это милисекунды неучтенные), чтобы избавится от последних разрядов нужно тогда так.
WHERE Round(DateField-Int(DateField), 10) = Round(#30/12/1899 02:00:00#,10)
(проще по задаче смотреть, лутше и точнее будет использовать временные функции, Hour, Minute, Second)
sniknik (2003-06-06 14:36:00) [4]похоже ты чешеш левой пяткой правое ухо, сначала разделяеш потом сравниваеш. зачем? почему не сразу.
по вопросу. вот так должно получится (все даты с 6 часами ровно)
WHERE DateField-Int(DateField)=#30/12/1899 18:00:00#