Странное поведение 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