Using persistence on a constant database
Yes, you can do this in $O(\log n)$ time.  Use a sweep-line algorithm together with a persistent tree data structure.

Imagine the point $(d_1,d_2)$ as being on a grid, with $d_1$ as the value of the $x$-coordinate and $d_2$ as the value of the $y$-coordinate.  Your sweep line is a horizontal line, namely, at time $t$, the sweep line is the line $d_2=t$.

You will build a data structure that stores all the points $(d_1,d_t)$ such that $d_2 \le t$.  You can use a balanced binary search tree, keyed on the value of $d_1$.  This data structure will let you answer the query Query$(a,b,t)$ in $O(\log n)$ time.

Now you're going to gradually increase the value of $t$ (sweeping the line upward), and adjusting the data structure as you go.  You'll save a copy of the data structure for each value of $t$ that occurs in the $d_2$-database.

This sounds like it requires $O(n^2)$ space.  However, there's a clever trick.  Use a persistent data structure to store the trees.  As you move the sweep line upward, you insert more items into the tree.  A persistent data structure will let you pick any time $t$ and do a lookup into the state of the tree at time $t$.  This lets you answer Query$(a,b,t)$ in time $O(\lg n)$.