在SQL Server中,您可以使用DATENAME函数将星期几作为字符串
declare @date datetime set @date = '12/16/08' select datename(dw, @date)
返回"星期二"
并且您可以使用DATEPART函数将星期几作为整数
declare @date datetime set @date = '12/16/08' select datepart(dw, @date)
返回3
但是说我有一个varchar,其中包含字符串"Tuesday",我想将其转换为3的整数表示.当然,我可以毫不费力地写出转换,但我宁愿使用内置函数.这样的功能存在吗?
遗憾的是,没有内置功能,但您可以像这样创建自己的功能:
CREATE FUNCTION dbo.WeekDay(@DayOfWeek Varchar(9)) RETURNS INT AS BEGIN DECLARE @iDayofWeek INT SELECT @iDayofWeek = CASE @DayOfWeek WHEN 'Sunday' THEN 1 WHEN 'Monday' THEN 2 WHEN 'Tuesday' THEN 3 WHEN 'Wednesday' THEN 4 WHEN 'Thursday' THEN 5 WHEN 'Friday' THEN 6 WHEN 'Saturday' THEN 7 END RETURN (@iDayofWeek) END GO
您应该使用描述和数值创建星期几表,而不是编写函数.你可以简单地加入到表中来获取数字.
如果您有多种方式存储多天(可能在基于字符的系统中),您可以将所有变体放入表中,因此TUE,Tues.,Tuesday将全部映射到相同的整数.