Мне нужно название месяца и номер месяца из переменной 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-запрос занимает очень много времени.
3 ответа
У вас есть таблица измерений даты в вашей базе данных? Это добавило бы соединение, но исключило бы вызовы функций и очистило бы сложные выражения. Вы можете сохранить нужный формат в виде столбца в этой таблице для каждой даты и присоединиться по ключу даты. Они также очень полезны для агрегирования данных по различным временным отрезкам. Я использовал это для запуска своего: http: //www.codeproject.com/Articles/647950/Create-and-Populate-Date-Dimension-for-Data-Wareho, но есть и другие
Вы можете использовать преобразование 112 для полного имени даты
datename(month, convert(date, convert(nvarchar(10),InvoiceCreateDateKey), 112))
Также вы можете использовать datepart для получения номера месяца
datepart(M,convert(date, convert(nvarchar(10),InvoiceCreateDateKey), 112))
Вы можете использовать SUBSTRING, чтобы получить 5-й и 6-й символы строки Datekey.
Похожие вопросы
Новые вопросы
sql-server
Microsoft SQL Server — это система управления реляционными базами данных (RDBMS). Используйте этот тег для всех выпусков Microsoft SQL Server, включая Compact, Express, Azure, Fast-track, APS (ранее PDW) и Azure SQL DW. Не используйте этот тег для других типов СУБД (MySQL, PostgreSQL, Oracle и т. д.). Не используйте этот тег для вопросов по программному обеспечению и разработке мобильных устройств, если только он не связан напрямую с базой данных.