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

私が見る唯一のdbに依存しない解決策は、今日からcurrの1月1日までの日数を取得することです。年。次に、それを7で割り、切り上げます。1月1日から今日まで73日あり、週番号は10.43になります。ISOの週番号は11です。

訂正:今週の最終日から現在の1月1日までの日数。年。この場合、ISO週は10であり、68/7 = 10(四捨五入)です。

于 2013-03-15T13:53:32.007 に答える
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

これを試すことができます。

@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 に答える
-1
select (DATEPART(yyyy , CAST(GETDATE() AS datetime)) * 100 + 
        DATEPART(ww , CAST(GETDATE() AS datetime))) as week
于 2014-03-26T08:28:52.807 に答える