Используйте between
.В вашем случае это будет between date1 and date2
SELECT * FROM your_table_name
WHERE your_tables_date_column
BETWEEN date1 and date2
Учет времени, если записано с:
SELECT * FROM your_table_name
WHERE DATE_FORMAT(your_tables_date_column, '%Y-%m-%d 00:00:00')
/* Oracle trunc(col) equivalent */
between date1 and date2
Это работает и для строк, например
SELECT * FROM Persons
WHERE lower(last_name)
BETWEEN 'smith' AND 'webster'
для чисел, например
SELECT * FROM Persons
WHERE height
BETWEEN 1 and 3 /* meters, i.e. exclude kids */
, и вы также можете использовать отрицательный, например,
SELECT * FROM Persons
WHERE lower(last_name)
NOT BETWEEN 'smith' AND 'webster'
Кстати, буквальный ответ на ваши вопросы выглядит примерно так:
SELECT * from tbl where date_field BETWEEN
CURDATE() AND
DATE_ADD(CURDATE(), INTERVAL (8 - IF(DAYOFWEEK(CURDATE())=1, 8, DAYOFWEEK(CURDATE()))) DAY) AS NEXTSUNDAY
/* Watch for performance issues with indexes when using functions on columns */