1

有没有办法使用独立于数据库的 SQL 来获取日期的周数?

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

SELECT EXTRACT(MONTH FROM :DATE)

但 EXTRACT 函数不知道 SQL92 中的周数。

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

4

6 回答 6

2

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

于 2013-03-15T13:31:54.857 回答
0

你可以试试这个。

声明@date datetime select @date='2013-03-15 00:00:00' select 'Week No: '+ convert(varchar(10),datepart(wk,@date)) as weekno

于 2013-03-15T12:55:42.650 回答
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 服务器上正常工作 ;-)

于 2013-03-15T12:57:55.303 回答
0

我发现的最好的主意是

SELECT ROUND(((DAY(NOW())-1)/7)+1)
于 2013-11-29T14:30:11.757 回答
0

我看到的唯一与数据库无关的解决方案是获取从今天到 1 月 1 日之间的天数。年。然后将其除以 7 并四舍五入。从 1 月 1 日到今天有 73 天,这给出了 10.43 作为周数。ISO 周数是 11。

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

于 2013-03-15T13:53:32.007 回答
-1
select (DATEPART(yyyy , CAST(GETDATE() AS datetime)) * 100 + 
        DATEPART(ww , CAST(GETDATE() AS datetime))) as week
于 2014-03-26T08:28:52.807 回答