--根据输入时间日期返回时间、昨天、本周几、具体日期 类似于微信朋友圈时间 (msserver 标量值函数 )
--命名为中文,请勿喷
</pre><pre name="code" class="sql">CREATE FUNCTION 解析_时间
(
@输入时间 DATETIME
)
RETURNS NVARCHAR(50)
AS
BEGIN
DECLARE @当前时间 DATETIME,@当前日期 DATE,@昨天日期 DATE,@当前时刻 NVARCHAR(50),@本周一日期 DATE,@当前年份 NVARCHAR(20)
SET @当前时间=GETDATE();
SET @当前日期= CONVERT(DATE,@当前时间,110)
SET @昨天日期=DATEADD(DAY,-1,@当前日期)
SET @当前时刻= CONVERT(NVARCHAR(50),@当前时间,108)
SET @本周一日期= CONVERT(DATE,DATEADD(wk, DATEDIFF(week,0,@当前时间),0),110)
SET @当前年份= DATENAME(YEAR, @当前时间)
DECLARE @输入日期 DATE,@输入时刻 NVARCHAR(50),@所在周 NVARCHAR(50),@输入年份 NVARCHAR(20),@输入月 NVARCHAR(10),@输入日 NVARCHAR(10),@输入时 NVARCHAR(10),@输入分 NVARCHAR(10)
SET @输入日期= CONVERT(DATE,@输入时间,110)
SET @输入时刻= CONVERT(NVARCHAR(50),@输入时间,108)
SET @所在周= DATENAME(WEEKDAY,@输入时间)
SET @输入年份= DATENAME(YEAR, @输入时间)
SET @输入月= DATENAME(MONTH, @输入时间)
SET @输入日= DATENAME(DAY, @输入时间)
SET @输入时= DATENAME(HOUR, @输入时间)
SET @输入分= DATENAME(MINUTE, @输入时间)
DECLARE @返回字符串 NVARCHAR(50)
BEGIN
IF @当前日期=@输入日期 SET @返回字符串=@输入时+':'+@输入分
ELSE IF @昨天日期=@输入日期 SET @返回字符串='昨天'
ELSE IF (@本周一日期<=@输入日期 AND @输入日期<@当前日期) SET @返回字符串=@所在周
ELSE IF @当前年份=@输入年份 SET @返回字符串=@输入月+'-'+@输入日
ELSE IF @当前年份<>@输入年份 SET @返回字符串=@输入日期
ELSE SET @返回字符串='计算出错';
END
RETURN @返回字符串
END
GO
SELECT dbo.解析_时间('2015-10-06 09:33:47.487') <span style="font-family: Arial, Helvetica, sans-serif;">--执行标题函数</span>