出力として何が必要かわかりません。毎週の最初の日付を取得しようとしているようです。
データが「密度が高い」(すべての日付にデータがあることを意味する) 場合は、次のことができます。
select min(myDateField) as dt
...
GROUP BY year(myDateField), week(myDateField);
あなたのコードにもかかわらず、cast()
「MyDateField」というフィールドは文字列ではなく日付/日時として保存されていると思います。
日付を ISO 標準に変換する場合:
select convert(varchar(10), min(myDateField), 121), -- puts it in YYYY-MM-DD format (my favorite)
最後に、まったく使いたくないかもしれませんweek()
。週の最初の曜日を見つけたいだけかもしれません。これを行うには、日付から曜日を引きます。
select dateadd(dd, datepart(dw, 1 - myDateField), myDateField) as dt
...
GROUP BY dateadd(dd, datepart(dw, 1 - myDateField), myDateField);
この構造では、group by
とselect
は同じ引数を持ちます。