Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 获取基于周的dayname索引_Sql_Sql Server_Tsql - Fatal编程技术网

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
而不是常量。如何使用它?已修复。现在试试,太棒了!不能说谢谢,因为这里禁止:)