No entiendo por que te sale son uno.
Mira esto
Código SQL:
Ver originalpruebas=> SELECT *FROM reg_personal;
id | nombre | dni
----+-----------+---------
7 | 131351165 | pepe
10 | 6486466 | juancho
8 | 1648468 | lulu
3 | 154166 | jasinta
(4 filas)
pruebas=> SELECT *FROM reg_fechas;
id | fchl
----+-------------------------
7 | 2010-03-09 09:39:08.625
10 | 2010-03-09 09:41:27.64
8 | 2010-03-09 09:41:34.281
3 | 2010-03-09 09:41:37.078
(4 filas)
pruebas=> SELECT
pruebas-> rp.id,
pruebas-> rp.nombre,
pruebas-> rp.dni,
pruebas-> rf.fchl
pruebas-> FROM
pruebas-> reg_personal AS rp
pruebas-> INNER JOIN
pruebas-> reg_fechas AS rf
pruebas-> ON
pruebas-> rp.id = rf.id
pruebas-> WHERE
pruebas-> rf.fchl::DATE
pruebas-> BETWEEN '2010-01-01'
pruebas-> AND '2010-04-01';
id | nombre | dni | fchl
----+-----------+---------+-------------------------
3 | 154166 | jasinta | 2010-03-09 09:41:37.078
7 | 131351165 | pepe | 2010-03-09 09:39:08.625
8 | 1648468 | lulu | 2010-03-09 09:41:34.281
10 | 6486466 | juancho | 2010-03-09 09:41:27.64
(4 filas)
Con la consulta que te dí en un principio me sale bien.
Saludos