Sql 获取基于周的dayname索引
使用以下查询,我们可以得到今天的工作日或特定日期的索引:Sql 获取基于周的dayname索引,sql,sql-server,tsql,Sql,Sql Server,Tsql,使用以下查询,我们可以得到今天的工作日或特定日期的索引: Select DATEPART(WEEKDAY, GETDATE()) 但我需要知道dayname的索引。就像我有一个Friday,我想得到6,我怎么能得到呢 更多澄清 如果。。。否则如下所示: Declare @DayName varchar(50) Declare @DayIndex int set @DayName='Friday' if @DayName='Saturday' set @DayIndex=7 else
Select DATEPART(WEEKDAY, GETDATE())
但我需要知道dayname的索引。就像我有一个Friday
,我想得到6,我怎么能得到呢
更多澄清
如果。。。否则如下所示:
Declare @DayName varchar(50)
Declare @DayIndex int
set @DayName='Friday'
if @DayName='Saturday'
set @DayIndex=7
else if @DayName='Friday'
set @DayIndex=6
... so on
所以我的问题是:
问题:如果我使用上述方法,系统的任何
区域设置中的日指数是否相同?我正在指示@@datefirst
,在我的系统中它的值是7
,如果在其他系统中它的值是1
,该怎么办?使用CASE
语句
Declare @DayName varchar(50)
Declare @DayIndex int
set @DayName='Friday'
SELECT @DayIndex = CASE @DayName
WHEN 'Sunday' THEN 1
WHEN 'Monday' THEN 2
WHEN 'Tuesday' THEN 3
WHEN 'Wednesday' THEN 4
WHEN 'Thursday' THEN 5
WHEN 'Friday' THEN 6
ELSE 7
END
使用CASE
语句
Declare @DayName varchar(50)
Declare @DayIndex int
set @DayName='Friday'
SELECT @DayIndex = CASE @DayName
WHEN 'Sunday' THEN 1
WHEN 'Monday' THEN 2
WHEN 'Tuesday' THEN 3
WHEN 'Wednesday' THEN 4
WHEN 'Thursday' THEN 5
WHEN 'Friday' THEN 6
ELSE 7
END
见p的答案ரதீப் 第一。您可以将其转换为这样的用户定义函数(考虑到@@datefirst
):
然后像这样使用它:
SELECT [dbo].[DayIndex] ('Friday');
测试1:
set language US_ENGLISH;
select dbo.DayIndex('Sunday') Sunday
,dbo.DayIndex('Monday') Monday
,dbo.DayIndex('Tuesday') Tuesday
,dbo.DayIndex('Wednesday') Wednesday
,dbo.DayIndex('Thursday') Thursday
,dbo.DayIndex('Friday') Friday
,dbo.DayIndex('Saturday') Saturday;
----- result -------
Sunday Monday Tuesday Wednesday Thursday Friday Saturday
1 2 3 4 5 6 7
测试2:
set language ITALIAN;
select dbo.DayIndex('Sunday') Sunday
,dbo.DayIndex('Monday') Monday
,dbo.DayIndex('Tuesday') Tuesday
,dbo.DayIndex('Wednesday') Wednesday
,dbo.DayIndex('Thursday') Thursday
,dbo.DayIndex('Friday') Friday
,dbo.DayIndex('Saturday') Saturday;
----- result -----
Sunday Monday Tuesday Wednesday Thursday Friday Saturday
7 1 2 3 4 5 6
见p的答案ரதீப் 第一。您可以将其转换为这样的用户定义函数(考虑到@@datefirst
):
然后像这样使用它:
SELECT [dbo].[DayIndex] ('Friday');
测试1:
set language US_ENGLISH;
select dbo.DayIndex('Sunday') Sunday
,dbo.DayIndex('Monday') Monday
,dbo.DayIndex('Tuesday') Tuesday
,dbo.DayIndex('Wednesday') Wednesday
,dbo.DayIndex('Thursday') Thursday
,dbo.DayIndex('Friday') Friday
,dbo.DayIndex('Saturday') Saturday;
----- result -------
Sunday Monday Tuesday Wednesday Thursday Friday Saturday
1 2 3 4 5 6 7
测试2:
set language ITALIAN;
select dbo.DayIndex('Sunday') Sunday
,dbo.DayIndex('Monday') Monday
,dbo.DayIndex('Tuesday') Tuesday
,dbo.DayIndex('Wednesday') Wednesday
,dbo.DayIndex('Thursday') Thursday
,dbo.DayIndex('Friday') Friday
,dbo.DayIndex('Saturday') Saturday;
----- result -----
Sunday Monday Tuesday Wednesday Thursday Friday Saturday
7 1 2 3 4 5 6
事实上,DATEPART(工作日,'2018-01-26')
确实返回6
(星期五)@mshsayem-我知道,但我只有friday
或Sunday
等,我想得到6或1等索引。CASE
就是这样。请参阅第一个答案。@mshsayem-尚未获得所需的答案。下面的答案应该足够了。您可以通过CREATE function DayIndex(@DayName as varchar(50))将INT作为BEGIN{function body}END
返回,将其转换为函数。事实上DATEPART(WEEKDAY,'2018-01-26')
确实返回6
(周五)@mshsayem-我知道,但是我只有Friday
或Sunday
等,我想得到像6或1等的索引。CASE
就是这样。请参阅第一个答案。@mshsayem-尚未获得所需的答案。下面的答案应该足够了。您可以通过CREATE function DayIndex(@DayName as varchar(50))将INT作为BEGIN{function body}END
返回,将其转换为函数。谢谢您的回答,但我不是在寻找它,也许我没有很好地解释我需要什么。因此,我添加了更多说明,请检查.@Md.SumanKabir-更新。。如果需要,您可以将其转换为函数谢谢您的回答,但我不是在寻找它,也许我没有很好地解释我需要什么。因此,我添加了更多说明,请检查.@Md.SumanKabir-更新。。如果需要,您可以将其转换为函数然后可以使用@@datefirst
而不是常量。如何使用它?已修复。现在试试,太棒了!不能说谢谢,因为这里禁止:)然后可以使用@@datefirst
而不是常量。如何使用它?已修复。现在试试,太棒了!不能说谢谢,因为这里禁止:)