Desafio, como faço para pegar essa situação na consulta

Se eu tenho um cara que trabalhou de 21/09/08 a 06/10/08… e digamos que eu queira todo mundo que trabalhou entre 22/09/08 a 02/10/08…, concorda que ele trabalhou dentro do período que quis? o between??? não funciona nesse caso.

Como faço uma consulta em SQL para isso???

Vou te ajudar de forma diferente.
Considere 4 datas, que nomearemos A, B, C e D.
As datas A e B são as referentes a um registro.
As datas C e D são referentes à sua consulta.

A <= B
C <= D

Sendo assim, as combinações possíveis de ordem destas 4 datas são:
A <= B <= C <= D (1)
A <= C <= B <= D (2)
A <= C <= D <= B (3)
C <= D <= A <= B (4)
C <= A <= D <= B (5)
C <= A <= B <= D (6)

Destas combinações, descarte b[/b] e b[/b], pos ambas desacoplam totalmente os 2 intervalos de datas, e não te interessam.
Assim, para pegar todo o restante, basta observar que nas situações b[/b] e b[/b] A <= C <= B, e que nas situações b[/b] e b[/b] C <= A <= D.
Portanto, na sua query, coloque a data C entre (between) as datas A e B, ou a data A entre as datas C e D.

Obs: estou considerando que between considera os 2 extremos, ou seja, se uso “X between Y and Z”, deve retornar todos os registros em que Y <= X <= Z, e não Y < X <= Z ou Y <= X < Z. Teste aí e qualquer coisa inclua como critério para pegar os registros em que A = C, A = D, B = C e/ou B = D.

A - inicio do trabalho de Ze_pinga
B - final do trabalho de Ze_pinga
C - inicio da data que quero
D - final da data que quero


WHERE datediff(A,C) >= 0
AND datediff(D,B) >= 0

Verdadeiro desafio: Suponha que você tenha gravado 2 datas, inicio do trabalho e final do trabalho, exemplo 01/01/2008 e 28/01/2008. Como contar o tempo de que o cara trabalhou descontando os finais de semanas entre essas duas data?