获取SQL中的周数

时间:2013-03-15 12:33:01

标签: sql date week-number database-agnostic

有没有办法获得与数据库无关的SQL的日期周数?

例如,要获取我使用的日期月份:

SELECT EXTRACT(MONTH FROM :DATE)

但是EXTRACT函数在SQL92中并不知道几周。

请注意我想要一个独立于数据库的解决方案!不要将此误解为有关MS SQL Server的问题。

6 个答案:

答案 0 :(得分:2)

似乎没有一个标准的SQL函数可以从日期中提取周数 - 请参阅here,了解不同的SQL方言如何从日期字段中提取不同的日期部分。

答案 1 :(得分:0)

你可以试试这个。

声明@date日期时间 select @ date ='2013-03-15 00:00:00' 选择'周号:'+转换(varchar(10),datepart(wk,@ date))为weekno

答案 2 :(得分:0)

试试这个: SELECT DATENAME(yy,GETDATE())+RIGHT(DATENAME(wk,GETDATE()),2)

要了解DATENAME,请点击以下链接:sqltutorials.blogspot.be/2007/05/sql-datename.html,右侧suite101.com/article/sql-functions-leftrightsubstrlengthcharindex-a209089。有一些例子可以更好地理解;-)它通常适用于MS和其他sql服务器;-)

答案 3 :(得分:0)

我看到的唯一一个独立于数据库的解决方案是获取今天和1月1日之间的天数。年。然后将其除以7并将其四舍五入。从1月1日到今天有73天,周数为10.43。 ISO周数为11。

更正:当前周的最后一天与当前的1月1日之间的天数。年。在这种情况下,ISO周是10周,68/7 = 10(四舍五入)。

答案 4 :(得分:0)

我找到的最好的主意是

SELECT ROUND(((DAY(NOW())-1)/7)+1)

答案 5 :(得分:-1)

select (DATEPART(yyyy , CAST(GETDATE() AS datetime)) * 100 + 
        DATEPART(ww , CAST(GETDATE() AS datetime))) as week