Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.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 函数计算一年中正确的周数_Sql_Sql Server 2008_Tsql_Week Number - Fatal编程技术网

Sql 函数计算一年中正确的周数

Sql 函数计算一年中正确的周数,sql,sql-server-2008,tsql,week-number,Sql,Sql Server 2008,Tsql,Week Number,我正在寻找能给我正确的周数的函数 一年中的第一天应该总是在第一周。 一年中的第一个星期六属于第一周 换句话说:我在寻找什么,但不是在PostgreSQL中,而是在sqlserver中 我真的很想用一个我以后会调用的函数来实现这一点 提前感谢您的帮助。在SQL Server中,不需要自定义函数;只需使用内置的withweek作为第一个参数: -- first day select datepart(week, '2013-01-01'); 产出:1 -- first Saturday selec

我正在寻找能给我正确的周数的函数

一年中的第一天应该总是在第一周。 一年中的第一个星期六属于第一周

换句话说:我在寻找什么,但不是在
PostgreSQL
中,而是在
sqlserver

我真的很想用一个我以后会调用的函数来实现这一点


提前感谢您的帮助。

在SQL Server中,不需要自定义函数;只需使用内置的with
week
作为第一个参数:

-- first day
select datepart(week, '2013-01-01');
产出:1

-- first Saturday
select datepart(week, '2013-01-05');
-- first Sunday
select datepart(week, '2013-01-06');
产出:1

-- first Saturday
select datepart(week, '2013-01-05');
-- first Sunday
select datepart(week, '2013-01-06');
产出:2

-- today
select datepart(week, '2013-04-01');
产出:14


这里有一个现场演示:

在SQL Server中,不需要自定义函数;只需使用内置的with
week
作为第一个参数:

-- first day
select datepart(week, '2013-01-01');
产出:1

-- first Saturday
select datepart(week, '2013-01-05');
-- first Sunday
select datepart(week, '2013-01-06');
产出:1

-- first Saturday
select datepart(week, '2013-01-05');
-- first Sunday
select datepart(week, '2013-01-06');
产出:2

-- today
select datepart(week, '2013-04-01');
产出:14


这里有一个实时演示:

选择datepart(week,getdate())作为CurrentWeekofYear

选择datepart(week,getdate())作为CurrentWeekofYear

不用麻烦编写函数了。相反,请创建并提前填充。这在查询中的维护和使用要简单得多,并且还有许多其他用途。您可能还想回顾有关此主题的。不要费心编写函数。相反,请创建并提前填充。这在查询中的维护和使用要简单得多,并且还有许多其他用途。您可能还想回顾关于此主题的。我没有与您相同的输出,例如:选择datepart(week,'2013-01-06');给我1,并选择datepart(周,'2013-01-07');给我2@Houari这可能是因为您的设置,当我在服务器上运行select@@datefirst时,我得到1,但在livedemo中我得到17@Houari没错,就是这样why@Houari使用
SET DATEFIRST n
(其中
n
是新设置)。另外,请参见上面我提供的4条评论链接,我没有与您相同的输出,例如:选择datepart(week,'2013-01-06');给我1,并选择datepart(周,'2013-01-07');给我2@Houari这可能是因为您的设置,当我在服务器上运行select@@datefirst时,我得到1,但在livedemo中我得到17@Houari没错,就是这样why@Houari使用
SET DATEFIRST n
(其中
n
是新设置)。另外,请参见上面我提供的4条评论的链接