Что такое ISO_year в sql-сервере

В настоящее время я работаю над созданием моего первого Data_warehouse using sql-server

у меня есть Date dimension я хочу заполнить его с помощью служб SSIS, у него есть поле с именем ISO_year

может кто-нибудь сказать мне, как я могу получить это?

я пробовал этот запрос::

select year(getdate()) - но я не думаю, что это ISO_year?

И мне нужно знать, что является наилучшей практикой для загрузки измерений в БД с помощью ssis?

я сослался на это http://michaelmorley.name/how-to/create-date-dimension-table-in-sql-server

2 ответа

Решение

Вот элемент Connect, который запрашивает функцию для вычисления ISO_YEAR.

DATEPART - ISO_YEAR для ISO_WEEK

В разделе временного решения у вас есть эта функция, которую вы можете использовать.

CREATE FUNCTION [dbo].[ISOyear](@date DATETIME)
returns SMALLINT
AS
BEGIN
     DECLARE @isoyear SMALLINT = CASE
         WHEN Datepart(isowk, @date)=1
             AND Month(@date)=12 THEN Year(@date)+1
         WHEN Datepart(isowk, @date)=53
             AND Month(@date)=1 THEN Year(@date)-1
         WHEN Datepart(isowk, @date)=52
             AND Month(@date)=1 THEN Year(@date)-1             
         ELSE Year(@date)
        END;
     RETURN @isoyear;
END;

Вот функция для iso_year, логика которой заключается в том, что четверг недели с даты параметра определяет год:

CREATE FUNCTION [dbo].[f_isoyear]
(
@p_date datetime
)
RETURNS int
as
BEGIN
  RETURN datepart(yy, dateadd(wk, datediff(d, 0, @p_date)/7, 3))
END
Другие вопросы по тегам