How do you achieve a physically sorted table file organization? Do I just declare an index on a column in the schema like ?

ALTER TABLE `table` ADD INDEX `index_name` (`colDate`)


I want the table records to be physically sorted not just when doing an ORDER BY query.

I believe it would be best practice to index on a date if I will be consistently query a range of dates or any query regarding a sequential range. Am I correct in believing this?
According to Chapter 7, Pages 148,149, under Storing Tables in Column-Sorted ORDER of the Book


By using ALTER TABLE ... ORDER BY statement, you have control over how MySQL stores the physical data for your tables, regardless of whether an index is in place.

You are theoretically correct, but the Storage Engine would have the final say on organization. The above statement I quoted applied to MyISAM. What about InnoDB ? Page 149 ends the chapter with

If the table had been defined with InnoDB instead of MyISAM, this would have no effect: InnoDB always stores its data by the Clustered Key.

The Clustered Index is essentially a rowid index as the MySQL Documentation says

If the table has no PRIMARY KEY or suitable UNIQUE index, InnoDB internally generates a hidden clustered index on a synthetic column containing row ID values. The rows are ordered by the ID that InnoDB assigns to the rows in such a table. The row ID is a 6-byte field that increases monotonically as new rows are inserted. Thus, the rows ordered by the row ID are physically in insertion order.

This is why doing ALTER TABLE ... ORDER BY has no effect on InnoDB tables. Even if the rows get physically reordered, rows will be accessed through the Clustered Key by rowid anyway.
YOUR ORIGINAL QUESTION
Looking back at the index you made, the following can be realized

If you always enter data with increasing date values, the index simplifies doing date range scans.
If you load data from earlier dates, only the index can help you with range scans.

The only way to physically reorder the Clustered Key would be to run this
CREATE TABLE mytable_new LIKE mytable;
INSERT INTO  mytable_new SELECT * FROM mytable ORDER BY colDate;
DROP TABLE mytable;
ALTER TABLE mytable_new RENAME mytable;

This would not be in your best interest to do this unless this is a one-time reordering. My advice would be to just stick with creating the index and let MySQL do all the necessary heavy lifting. In addition, you will need to run ANALYZE TABLE mytable; once a week to ensure the latest index statistics before running large date scans.