Я думаю, что это отличный вопрос.Вот мое мнение:
Я твердо верю в идею, что в конечном итоге вы сэкономите больше времени и будете иметь меньше головной боли, используя типы данных для тех целей, для которых они предназначены.Это означает даты в полях даты, символы в символьных полях и т. Д. Если вы выберете вариант 2, вам нужно будет не забывать кодировать все возможные форматы даты каждый раз, когда вы запрашиваете таблицу .Если вы установите это и вернетесь через год, вспомните ли вы?
В отличие от этого, если вы используете поле даты и выполняете предварительную работу в процессе ETL по правильному обращению с датами,Вы всегда будете знать, как взаимодействовать с полем.И я даже не буду вдаваться в последствия для производительности.
И в этом случае я не уверен, что вы даже увидите краткосрочную выгоду.Если, например, в исходных данных есть 5 различных возможных форматов даты, вам нужно будет так или иначе учесть их;либо в ETL, либо в выходных запросах.Код для преобразования этих 5 форматов в ETL не является существенно более сложным, чем код для управления этими 5 форматами в выходных запросах.
И если данные могут буквально поступать в бесконечном числеформатов, у вас есть большие проблемы в любом случае.Либо ваш ETL сломается, либо ваши запросы сломаются.В определенной степени это неснижаемая сложность.
Я бы посоветовал вам уделить время кодированию правильных преобразований в ваш ETL.Но сделайте себе одолжение и закодируйте шаг предварительной обработки, который определяет даты в форматах, которые не будут должным образом преобразованы, и предупреждает вас о них.Если вы видите шаблоны;то есть, если какой-либо формат появляется более одного раза, закодируйте преобразование для него.Со временем вам придется вручную чистить все меньше и меньше этих неприятных дат.При удаче ваши 35% упадут до 5% или менее.
Удачи!