The built-in `calendar-mode` and `diary-mode` have their limitations.  However, `diary-mode` is designed to present a span of time if so desired.  Load the `diary-lib` library with `M-x eval-expression RET (require 'diary-lib) RET` and then type `M-x describe-function RET diary-list-entries RET` to read about it.  For more advanced searching and calendaring abilities, take a look at `org-mode` / `org-agenda-mode`, and/or `calfw`.  A quick grep of the Emacs built-in code revealed that the `cal-tex` library is designed to work with the diary feature, if you use TeX/LaTeX that is.

See also the function `diary`, which has a doc-string that states as follows:

    "Generate the diary window for ARG days starting with the current date.
    If no argument is provided, the number of days of diary entries is governed
    by the variable `diary-number-of-entries'.  A value of ARG less than 1
    does nothing.  This function is suitable for execution in an init file."

And, of course, the above doc-string mentioned that the variable `diary-number-of-entries` is customizable.

The function `diary-view-entries` also looks interesting, so check that out too:

    "Prepare and display a buffer with diary entries.
    Searches the file named in `diary-file' for entries that match
    ARG days starting with the date indicated by the cursor position
    in the displayed three-month calendar."