1

テーブルに日付列があり、その日付に関係なく、その日付からの月に基づいてその特定の日付の週番号を取得したい

例えば:

01-dec-2012 to 07-dec-2012 should give week number as 1
08-dec-2012 to 14-dec-2012 should give week number as 2
15-dec-2012 to 21-dec-2012 should give week number as 3
22-dec-2012 to 28-dec-2012 should give week number as 4
29-dec-2012 to 31-dec-2012 should give week number as 5

この週番号は、週の開始日に依存しません。つまり、任意の曜日を指定できます。

selectSQL Server 2008 でこの出力を取得するステートメントを作成するにはどうすればよいですか?

4

3 に答える 3

6

DAY (Transact-SQL)を使用できます

select ((day(DateColumn)-1) / 7) + 1
from YourTable

SQL フィドル

MS SQL Server 2012 スキーマのセットアップ:

create table YourTable
(
  D datetime
)

insert into YourTable 
select getdate()+Number
from master..spt_values
where type = 'P' and
      Number between 1 and 15

クエリ 1 :

select D,
       ((day(D)-1) / 7) + 1 as W
from YourTable

結果

|                              D | W |
--------------------------------------
| January, 03 2013 07:48:54+0000 | 1 |
| January, 04 2013 07:48:54+0000 | 1 |
| January, 05 2013 07:48:54+0000 | 1 |
| January, 06 2013 07:48:54+0000 | 1 |
| January, 07 2013 07:48:54+0000 | 1 |
| January, 08 2013 07:48:54+0000 | 2 |
| January, 09 2013 07:48:54+0000 | 2 |
| January, 10 2013 07:48:54+0000 | 2 |
| January, 11 2013 07:48:54+0000 | 2 |
| January, 12 2013 07:48:54+0000 | 2 |
| January, 13 2013 07:48:54+0000 | 2 |
| January, 14 2013 07:48:54+0000 | 2 |
| January, 15 2013 07:48:54+0000 | 3 |
| January, 16 2013 07:48:54+0000 | 3 |
| January, 17 2013 07:48:54+0000 | 3 |
于 2013-01-02T07:48:40.773 に答える
0

これを試して

 declare @dates datetime
 select @dates='2012-12-22'
 SELECT datepart(dd,@dates), ceiling (cast(datepart(dd,@dates)as numeric(38,8))/7)
于 2013-01-02T07:49:46.470 に答える
0

あなたが望むことをするためのいくつかのオプションがあります。その中で最も有望と思われるのは、DATEPART関数の使用です。ただし、ローカル設定によって結果が異なる場合があることに注意してください。

それらの1つがあなたのためにうまくいくことを願っています.

于 2013-01-02T07:47:05.420 に答える