This is a tough one. Perhaps you could subtract 4 hours from each DATETIME field before processing. That way your date dimension could be used as normal. For the time, you could then store the hour number in the fact table and adjust it back as necessary.
Another option for the time would be to create an actual time dimension with both the adjusted hour and the actual hour in it and use a surrogate (technical) key to link the appropriate row in the time dimension to each row in the fact table, i.e., the same way the date dimension is linked.
Last edited by darrell.nelson; 12-14-2013 at 11:30 AM.
Reason: Another option...
Java 1.7 (64 bit)
MySQL 5.6 (64 bit)
Windows 7 (64 bit)