Что такое 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