データベースに依存しない SQL で日付の週番号を取得する方法はありますか?
たとえば、私が使用する日付の月を取得するには:
SELECT EXTRACT(MONTH FROM :DATE)
しかし、EXTRACT 関数は SQL92 の週数を認識しません。
データベースに依存しないソリューションが必要であることに注意してください。これを MS SQL Server に関する質問と誤解しないでください。
データベースに依存しない SQL で日付の週番号を取得する方法はありますか?
たとえば、私が使用する日付の月を取得するには:
SELECT EXTRACT(MONTH FROM :DATE)
しかし、EXTRACT 関数は SQL92 の週数を認識しません。
データベースに依存しないソリューションが必要であることに注意してください。これを MS SQL Server に関する質問と誤解しないでください。
日付から週番号を抽出する単一の標準SQL関数はないようです。さまざまなSQLダイアレクトが日付フィールドからさまざまな日付部分を抽出する方法の比較については、ここを参照してください。
私が見る唯一のdbに依存しない解決策は、今日からcurrの1月1日までの日数を取得することです。年。次に、それを7で割り、切り上げます。1月1日から今日まで73日あり、週番号は10.43になります。ISOの週番号は11です。
訂正:今週の最終日から現在の1月1日までの日数。年。この場合、ISO週は10であり、68/7 = 10(四捨五入)です。
これを試してください:
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)
これを試すことができます。
@date datetime を宣言 select @date='2013-03-15 00:00:00' select 'Week No: '+ convert(varchar(10),datepart(wk,@date)) as weekno
select (DATEPART(yyyy , CAST(GETDATE() AS datetime)) * 100 +
DATEPART(ww , CAST(GETDATE() AS datetime))) as week