Ми починаємо проектувати будівельні блоки марта / складу даних, і нам потрібно мати можливість підтримувати всі часові пояси (наші клієнти з усього світу). Починаючи з читання дискусій в Інтернеті (і в книгах), загальним рішенням, як видається, є окремий вимір дати та часу, а також часові позначки в таблицях фактів.
Однак питання, на яке я важко відповідаю, полягає в тому, що корисного для нас дійсно мають розміри дати та часу, враховуючи мої вимоги до динамічного часового поясу? Часовий вимір має трохи більше сенсу, але мені важко з виміром дати. Загальний підхід до проектування розміру дати зазвичай включає такі властивості, як назва дня, день тижня, назва місяця тощо. Проблема, з якою я маю те, що в 23:00 у вівторок, 31 грудня 2013 року в UTC, є середа , 1 січня 2014 року у всіх часових поясах, що перебувають після UTC + 2.
Отже, якщо мені доведеться робити всі ці перетворення часового поясу для кожного запиту (та звіту), то який сенс мати та зберігати ці властивості, які я, мабуть, ніколи не буду використовувати (здається)? Деякі люди пропонують мати рядки для кожного часового поясу, але це здається мені смішним. Нам потрібно мати можливість зберігати мільйони записів щомісяця.
Інші пропонують створити таблицю перемикання часового поясу, яка хоч і має певний сенс, але це також здається додатковою складністю та додатковими приєднаннями, щоб досягти чогось, що мої клієнтські програми та звіти повинні бути легко зрозуміти з дати (звіт буде в основному веб-базією) де є безліч бібліотек, які допомагають перетворювати, відображати та форматувати дати).
Єдине, про що я можу придумати, - це легкість та можливо виконання групувань за датою та годиною, але як погана практика - групувати за датою (ми використовуємо MS SQL, але ми будемо запитувати мільйони рядків) або чи варто нам врахувати просто надзвичайно прості розміри дати та часу з числом не більше години, дня, місяця та року здебільшого, оскільки більшість літералістів, таких як понеділок, не означатиме багато часу, коли грають часові пояси?