Я бы сказал, что это зависит от того, что вы делаете. Однако, по моему опыту, возможности для улучшения с помощью пакетов служб SSIS огромны. Мы увидели 10-кратное улучшение в нашей среде хранилища данных, когда взяли некоторые из самых сложных хранимых процедур и поместили их в пакеты служб SSIS. Использование памяти SSIS (в любом случае, в этой ситуации) имело все значение.
Я хочу повторить, что важно знать, что вы делаете. Например, оператор SQL обычно превосходит поток данных SSIS, когда преобразование данных является таблицей на одном и том же сервере.
Лучше всего выбрать SP или два, создать их в SSIS и протестировать их обоих.
Похоже, что ответ на все вопросы SQL начинается с, Это зависит ...
Я не думаю, что это стандартизовано. Это также не часть хорошо известных наборов данных о глобализации.
Ответ зависит от того, как именно вы хотите определить каждый сезон. Эта диаграмма в Википедии показывает, что точный день и время немного меняются от года к году.
Простое решение, которое может быть «достаточно хорошим», - использовать четыре фиксированные даты, например: 20 марта , 21 июня, 22 сентября и 21 декабря.
Лично я бы описал различные разделы по кварталам, а не по климату / периоду года, если этого не требовалось напрямую.
Кто-то другой может быстро придумать код для вас, но из той самой статьи на Wikipedia.org , на которую вы ссылались, мы получаем следующее:
Районы с умеренным климатом
Мы могу четко различить шесть времена года. Указанные здесь даты относятся к Северное полушарие: [необходима ссылка]
* Prevernal (1 марта – 1 мая) * Весенний (1 мая – 15 июня) * Estival (15 июня – 15 августа) * Серотинал (15 августа - 15 сентября) * Осенний (15 сентября - 1 ноября) * Hibernal (1 ноября - 1 марта)
Затем вы можете написать функцию GetTemperateSeason ()
, чтобы возвращать перечисление выше на основе диапазонов месяцев.
северный / южный:
21/03 - начало весны / осени
21/06 - начало лета / зимы
23/09 - начало осени / весны
22/12 - начало зимы / лета
иногда ТОЛЬКО на один-два дня, но для этого вам нужно будет проверить на таких сайтах, как: timeanddate.com
public class Season
{
private const string WINTER = "Winter";
private const string SPRING = "Spring";
private const string SUMMER = "Summer";
private const string AUTUMN = "Autumn";
public string Name { get; set; }
public string Value { get; set; }
public List<Season> LastFiveBillingQuarters
{
get
{
IList<Season> billingPeriods = new List<Season>();
StringBuilder sbDisplayText;
DateTime billingPeriod;
for (int i = 0; i >= -12; i -= 3)
{
billingPeriod = DateTime.Now.AddMonths(i);
var month = billingPeriod.Month;
var day = billingPeriod.Day;
var year = billingPeriod.Year;
var ticks = billingPeriod.ToString();
sbDisplayText = new StringBuilder();
if ((month >= 12 || month < 03) & day >= 22)
sbDisplayText.Append(WINTER);
else if (month >= 09 & day >= 23)
sbDisplayText.Append(AUTUMN);
else if (month >= 06 & day >= 21)
sbDisplayText.Append(SUMMER);
else if (month >= 03 & day >= 21)
sbDisplayText.Append(SPRING);
sbDisplayText.Append(string.Format("{0}{1}", " ", year));
billingPeriods.Add(new Season() { Name = sbDisplayText.ToString(), Value = ticks });
}
return billingPeriods.ToList();
}
}
}