Datekey上的功能

时间:2016-09-07 18:57:38

标签: sql-server tsql

我想要来自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查询需要很长时间才能执行。

3 个答案:

答案 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但是还有其他的那些