Creating the query by SQL Script will not make any difference to the formatting of the dates and the order of the items in the chart.
The only way I've found to do this is tedious (and there may be a better way). Basically you do the following:
1. Run a preview of the report.
2. In the preview of the chart, click on the individual date label.
3. Right-click on the date label and select "Edit Axis Label"
4. Change the label for that individual value.
5. Repeat for all labels in the chart.
6. Rerun the report for a different set of dates and do the same thing.
7. Repeat for as many date ranges as you can.
One you've set the label for a date, Crystal should "remember" that value and it will appear correctly no matter where it is on the chart. The problem is that this has to be done for ALL possible dates on the report so it may not be feasible for longer periods of time.
Another option would be to change your date format to YYYY-MM - the dash separates the month from the year. It will give you the same sort and may be easier for the users to read and understand.
-Dell