Странное поведение between (PascalScript)
Раздел: FastScript
Доброго времени суток. Странным образом ведет себя between в FastScript (либо я чего намудрил 🙂).
Собственно имеется код:
var
BegDate : TDateTime;
EndDate : TDateTime;
procedure ReportOnStartReport(Sender: TfrxComponent);
begin
DateEdit1.Date := Now;
DateEdit2.Date := Now;
end;
procedure Button1OnClick(Sender: TfrxComponent);
var
s : string;
begin
Set('FilterPeriod', '''' + 'Период: ' + FormatDateTime('dd.mm.yyyy', DateEdit1.Date) + ' - ' + FormatDateTime('dd.mm.yyyy', DateEdit2.Date) + '''');
BegDate := StrToDateTime(Copy(DatetimeToStr(DateEdit1.Date), 1, 10) + ' 00:00:00');
EndDate := StrToDateTime(Copy(DatetimeToStr(DateEdit2.Date), 1, 10) + ' 23:59:59');
// ShowMessage(BegDate < EndDate);
s := 'select'#13 +
' u.*, s.*, st.name as statname'#13 +
'from'#13 +
' user u, sdmsg s, sdstatus st'#13 +
'where'#13 +
' u.userid = s.usermsgid and'#13 +
' (s.datemsg between :p1 and :p2) and'#13 +
' s.statusid = st.statusid and'#13 +
' u.depwpid in'#13 +
' ('#13 +
' select'#13 +
' d.parentid'#13 +
' from'#13 +
' tmpdepartm t'#13 +
' inner join departm d on (t.depwpid = d.depwpid)'#13 +
' )'#13 +
'order by u.name, s.sdmsgid, s.sdlistid';
with ADOQuery1 do
begin
Close;
SQL.Text := s;
with Params.Items[0] do
begin
DataType := ftDateTime;
Value := BegDate;
end;
with Params.Items[1] do
begin
DataType := ftDateTime;
Value := EndDate;
end;
Open;
end;
end;
begin
end.
Фильтрую по дате 10.06.2020 - 10.06.2020. Отчет возвращается пустой (хотя нужные записи есть)
Фильтрую по дате 09.06.2020 - 09.06.2020. Отчет возвращается пустой (хотя нужные записи есть)
Если установить фильтр 09.06.2020 - 10.06.2020. Отчет формируется корректно, записи есть. Укажите, где я перемудрил? Вроде с DateTime все корректно сделал.
Спасибо!
Комментарии
Извиняюсь, разобрался.
https://searchoracle.techtarget.com/answer/Using-BETWEEN-with-DATETIMEs-in-SQL