【发布时间】:2018-09-10 18:17:02
【问题描述】:
尝试创建一个函数将“2018-05-21”的日期格式拆分为2018 | 05 | 21 |作为三个单独的列。尝试创建如下函数,但在“月”、“日”出现错误。错误提示“'month' 附近的语法不正确。需要 '(' 或 Select。”
CREATE FUNCTION [dbo].[functionname]
(
-- Add the parameters for the function here
@DateFormat AS DATETIME
)
RETURNS VARCHAR (MAX)
AS
BEGIN
RETURN DATEPART(YEAR,@DateFormat),
DATEPART(Month,@DateFormat),
DATEPART(Day,@DateFormat)
END
GO
【问题讨论】:
-
为什么要为此创建一个函数?
-
这样其他人也可以调用它,当他们想在任何类型的分析中直接使用它时,或者有更好的格式可以使用。
-
我确实直接在桌子上试过这个。它确实有效。 /* DATEPART(year,Date) as year, DATEPART(month,Date) as Month, DATEPART(DD,Date) as Date */
-
如果您已经将日期格式化为 - 您可以进行替换(日期,'-','|')
-
可能不是您想要的方式,可以在选择查询中的各个行上使用...交叉应用答案可能会完成工作,但是任何可以编写 APPLY 语句的人也知道如果需要,如何调用 MONTH()。
标签: sql tsql sql-server-2008