Цитата:
Сообщение от
lev
Аксаптовскими средствами можно решить все, просто с бОльшими трудозатратами

А неужели преоброзование типов работает быстрее пары лишних сравнений?
Цитата:
Сообщение от
lev
Например, есть таблицы:
Table1 с полями: FromDate, FromTime, ToDate, ToTime
Table2 с полями: FromDate, FromTime, ToDate, ToTime
известно значение Table2, нужно проверить есть ли пересекающиеся во времени строчки в Table1...
вот такой случай решается в аксапте геморойно

Вообще эта задача ничуть не сложнее предыдущей. В том смысле, что для её решения нужно то же число сравнений.
X++:
((T1.fromDate < T2.toDate) || ((T1.fromDate == T2.toDate) && (T1.fromTime <= T2.toTime))) &&
((T1.toDate > T2.fromDate) || ((T1.toDate == T2.fromDate) && (T1.toTime >= T2.fromTime)))
P.S.: Накатал тут на коленке пару макросов для работы с датами и временем. Может кому пригодится.
X++:
#localmacro.lessOrEq
/* (%1) - Date_1 */
/* (%2) - Time_1 */
/* (%3) - Date_2 */
/* (%4) - Time_2 */
( ((%1) < (%3)) || ( ((%1) == (%3)) && ((%2) < (%4)) ) )
#endmacro
#localmacro.greatOrEq
/*(%1) - Date_1 */
/*(%2) - Time_1 */
/*(%3) - Date_2 */
/*(%4) - Time_2 */
( ((%1) > (%3)) || ( ((%1) == (%3)) && ((%2) > (%4)) ) )
#endmacro
#localmacro.dt
/* (%1) - Date */
/* (%2) - Time */
%1, %2
#endmacro
#localmacro.between
/* (%1) - DateFrom */
/* (%2) - TimeFrom */
/* (%3) - DateTo */
/* (%4) - TimeTo */
/* (%5) - Date */
/* (%6) - Time */
(#greatOrEq(#dt(%5, %6), #dt(%1, %2)) && #lessOrEq(#dt(%5, %6), #dt(%3, %4)))
#endmacro
#localmacro.cross
/* (%1) - DateFrom_1 */
/* (%2) - TimeFrom_1 */
/* (%3) - DateTo_1 */
/* (%4) - TimeTo_1 */
/* (%5) - DateFrom_2 */
/* (%6) - TimeFrom_2 */
/* (%7) - DateTo_2 */
/* (%8) - TimeTo_2 */
(#lessOrEq(#dt(%1, %2), #dt(%7, %8)) && #greatOrEq(#dt(%3, %4), #dt(%5, %6)))
#endmacro