是否有一种方法可以获得与数据库独立的SQL日期的周数?
例如要获取日期的月份,我使用:
SELECT EXTRACT(MONTH FROM :DATE)
但是EXTRACT函数不知道SQL92中的周。
请注意,我想要一个解决方案,是数据库独立的!
似乎没有一个标准的SQL函数可以从日期中提取周数——请参阅这里,比较不同的SQL方言如何从日期字段中提取不同的日期部分。
你可以试试这个
声明@date日期时间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,请点击以下链接:sqltutorial .blogspot.be/2007/05/sql-datename.html,右边是suite101.com/article/sql-functions-leftrightsubstrlengthcharindex-a209089。有更好地理解的例子;-)它将工作在MS和其他sql服务器正常;-)
我看到的唯一独立于数据库的解决方案是获得今天和当前的1月1日之间的天数。的一年。然后除以7,四舍五入。从1月1日到今天有73天,所以周数是10.43。ISO周数为11。
更正:当前周的最后一天到当前周的1月1日之间的天数。的一年。在本例中,ISO周为10,68/7 = 10(四舍五入)。
我发现最好的主意是
SELECT ROUND(((DAY(NOW())-1)/7)+1)
select (DATEPART(yyyy , CAST(GETDATE() AS datetime)) * 100 +
DATEPART(ww , CAST(GETDATE() AS datetime))) as week