我想要来自Datekey变量EX:20141217的MonthName和MonthNumber。我需要输出
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查询需要很长时间才能执行。
答案 0 :(得分:0)
您可以使用SUBSTRING获取Datekey字符串的第5个和第6个字符。
答案 1 :(得分:0)
您可以使用112转换为完整日期名称
datename(month, convert(date, convert(nvarchar(10),InvoiceCreateDateKey), 112))
您也可以使用datepart获取月号
datepart(M,convert(date, convert(nvarchar(10),InvoiceCreateDateKey), 112))
答案 2 :(得分:0)
您的数据库中是否有日期维度表?它会添加一个连接,但会消除函数调用并清理复杂的表达式。您可以在此表中为每个日期存储所需的格式,并在日期键上加入。它们对于通过各种时间片聚合数据也非常有用。我用这个来开始我的:http://www.codeproject.com/Articles/647950/Create-and-Populate-Date-Dimension-for-Data-Wareho但是还有其他的那些