有没有办法使用独立于数据库的 SQL 来获取日期的周数?
例如,要获取我使用的日期的月份:
SELECT EXTRACT(MONTH FROM :DATE)
但 EXTRACT 函数不知道 SQL92 中的周数。
请注意我想要一个独立于数据库的解决方案这一事实!不要将此误解为有关 MS SQL Server 的问题。
有没有办法使用独立于数据库的 SQL 来获取日期的周数?
例如,要获取我使用的日期的月份:
SELECT EXTRACT(MONTH FROM :DATE)
但 EXTRACT 函数不知道 SQL92 中的周数。
请注意我想要一个独立于数据库的解决方案这一事实!不要将此误解为有关 MS SQL Server 的问题。
似乎没有一个标准的 SQL 函数可以从日期中提取周数 - 请参阅此处以比较不同的 SQL 方言如何从日期字段中提取不同的日期部分。
你可以试试这个。
声明@date datetime select @date='2013-03-15 00:00:00' select 'Week No: '+ convert(varchar(10),datepart(wk,@date)) as weekno
试试这个:
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 服务器上正常工作 ;-)
我发现的最好的主意是
SELECT ROUND(((DAY(NOW())-1)/7)+1)
我看到的唯一与数据库无关的解决方案是获取从今天到 1 月 1 日之间的天数。年。然后将其除以 7 并四舍五入。从 1 月 1 日到今天有 73 天,这给出了 10.43 作为周数。ISO 周数是 11。
更正:当前一周的最后一天与当前时间的 1 月 1 日之间的天数。年。在这种情况下,ISO 周为 10,并且 68/7 = 10(四舍五入)。
select (DATEPART(yyyy , CAST(GETDATE() AS datetime)) * 100 +
DATEPART(ww , CAST(GETDATE() AS datetime))) as week