Using the MIN Aggregate function with dates

Using the MIN Aggregate function with dates

  
Requirement
My client wanted to show its shops' earliest and latest opening dates, by region on the Dashboard.

Solution
Because we have Shop Entity in the data model which has ShopName, Region, OpeningDate as attributes, I thought a simple use of the MIN and MAX aggregation function would have solved the problem.
 
And so I wrote the following Advance Query:

SELECT Region,
MIN(Shop.[OpeningDate]),
MAX(Shop.[OpeningDate])
FROM Shop
GROUP BY Region
Everything looked nice and easy until I got the following results:

Region Earliest Date Latest Date
Asia 1991-05-01 2011-04-05
Europe 1991-04-01 2012-04-05
Americas
1900-01-01
2013-04-05

The "Latest Date" column values seemed right but 1900-01-01 showed up in "Earliest Date". As my client is a computer peripheral company, this seemed way too early to have a shop open.
 
The problem here is that some records didn't have a defined OpeningDate and in those cases the platform defaults to 1900-01-01 (and not null as I expected from using the solution above).
 
So to overcome this problem I used the following query:
SELECT Region,
MIN(CASE Shop.[OpeningDate] WHEN '19000101' THEN NULL
                            ELSE Shop.[LastPurchase]
    END
),
MAX(Shop.[OpeningDate])
FROM Shop
GROUP BY Region
After that I got these new results:

Region Earliest Date Latest Date
Asia 1991-05-01 2011-04-05
Europe 1991-04-01 2012-04-05
Americas 1991-04-05 2013-04-05

And that’s more like it.
 
Hope this helps.
 
Note: This Advance query targets MS SQL, I don't know if it works in Oracle. If someone with expertise in Oracle SQL sees this post please share the knowledge.