Мне нужно название месяца и номер месяца из переменной Date Key EX: 20141217. Мне нужен вывод как

Month Name: December MonthNumber: 12

Я попытался преобразовать Datekey в переменную DateTime, используя выражение

convert(datetime,convert(varchar(10),InvoiceCreateDateKey,120))

И в верхней части я использовал функцию Month, чтобы получить MonthNumber.

MONTH(convert(datetime,convert(varchar(10),InvoiceCreateDateKey,120))) 

И это следующее выражение для MonthName

DATENAME(m,convert(datetime,convert(varchar(10),InvoiceCreateDateKey,120)))

Я хочу знать, есть ли в sql какие-либо другие функции, которые я могу использовать, кроме этих сложных выражений? Я хочу упростить эти выражения. Используя приведенные выше выражения, мой sql-запрос занимает очень много времени.

1
jaya 7 Сен 2016 в 21:57

3 ответа

Лучший ответ

У вас есть таблица измерений даты в вашей базе данных? Это добавило бы соединение, но исключило бы вызовы функций и очистило бы сложные выражения. Вы можете сохранить нужный формат в виде столбца в этой таблице для каждой даты и присоединиться по ключу даты. Они также очень полезны для агрегирования данных по различным временным отрезкам. Я использовал это для запуска своего: http: //www.codeproject.com/Articles/647950/Create-and-Populate-Date-Dimension-for-Data-Wareho, но есть и другие

0
schiznig 7 Сен 2016 в 19:26

Вы можете использовать преобразование 112 для полного имени даты

datename(month, convert(date, convert(nvarchar(10),InvoiceCreateDateKey), 112))

Также вы можете использовать datepart для получения номера месяца

datepart(M,convert(date, convert(nvarchar(10),InvoiceCreateDateKey), 112)) 
0
Kannan Kandasamy 7 Сен 2016 в 19:21

Вы можете использовать SUBSTRING, чтобы получить 5-й и 6-й символы строки Datekey.

0
Tab Alleman 7 Сен 2016 в 18:59