2012-06-20 4 views
2

В проекте Datawarehouse с SSIS/SSAS я должен создать собственное измерение времени, потому что у меня есть личные данные для интеграции.SQL Server несколько языков дат в одном запросе

Моя проблема связана с SSAS, потому что мне также необходимо интегрировать перевод. После прочтения документации я нашел команду для установки языка для текущего сеанса с помощью SET LANGUAGE ENGLISH, но я не могу изменить язык для другого поля запроса.

Есть ли способ генерировать MONTH_NAME по-французски, а также получить MONTH_NAME_DE?

Вот скрипт, который я нашел в Интернете

WITH Mangal as 
( 
    SELECT Cast ('1870-01-01' as DateTime) Date --Start Date 
    UNION ALL 
    SELECT Date + 1 
    FROM Mangal 
    WHERE Date + 1 < = '2015-12-31' --End date 
) 

SELECT 
    Row_Number() OVER (ORDER BY Date) as ID 
    , Date as DATE_TIME 
    , YEAR (date) as YEAR_NB 
    , MONTH (date) as MONTH_NB 
    , DAY (date) as DAY_NUMBER 
    , DateName (mm, date) as MONTH_NAME 
    , LEFT (DateName (mm, date), 3) KMONTH_NAME 
    , DateName (dw, date) as DAY_NAME 
    , LEFT (DateName (dw, date), 3) as KDAY_NAME 
    , (SELECT TOP 1 FIELD 
     FROM TABLEXY 
     WHERE Date BETWEEN TABLEXY.DATE_FROM AND LEGISLATUR.DATE_TO 
      AND LANGAGE = 'FR' 
    ) as PERSONAL_FIELD 
    , (SELECT TOP 1 FIELD 
     FROM TABLEXY 
     WHERE Date BETWEEN TABLEXY.DATE_FROM AND LEGISLATUR.DATE_TO 
      AND LANGAGE = 'DE' 
    ) as PERSONAL_FIELD_DE 


FROM Mangal 

OPTION (MAXRECURSION 0) 

ответ

1

SQL Server содержит таблицу, содержащую названия месяцев и дней недели. Однако они сохраняются как значения, разделенные запятыми:

select 
    months, 
    shortmonths, 
    days 
from 
    master.dbo.syslanguages 
where 
    alias in ('English','French', 'German') 

Вы можете использовать это в своем запросе.

+0

Спасибо за ответ. Но они «взорваны» в одну строку, например «январь, февраль, март, апрель, май, июнь, июль, август, сентябрь, октябрь, ноябрь, декабрь». Dow вы знаете, как совместить связь между моим запросом? –

+0

Я нашел статью, в которой объясняется, как разбить данные 'syslanguages' здесь: http://sqlserverdiaries.com/blog/index.php/2012/01/using-built-in-multi-language-month-and- weekday-names-for-application-lists/Я думаю, что это будет полезно. Еще раз, спасибо за ваш ответ! –

Смежные вопросы