DateTime 形式の日付の行を含むデータベース テーブルがあります。私がする必要があるのは、利用可能な日付のすべての異なる週番号を取得することです。たとえば、次の日付がある場合:
03-JAN-13
04-JAN-13
09-JAN-13
SQLクエリは、次の週番号を提供します:1と2. PS:その後、これらの値をドロップダウンリストに入れます(そのステップで問題ありません)。
それで、誰かがそれを行う方法を教えてもらえますか?
使用している RDBMS を指定しませんでしたが、次を使用して週番号を取得できます。
使用する SQL Server DatePart()
:
select distinct datepart(week, dates) WeekNo
from yourtable
デモで SQL Fiddle を参照してください
MySQL では、以下を使用できますWeek()
。
select distinct week(dates)
from yourtable
デモで SQL Fiddle を参照してください
Oracle では、以下を使用できますto_char()
。
select distinct to_char(dates, 'W') WeekNo
from yourtable
デモで SQL Fiddle を参照してください
PostgreSQL では、以下を使用できます。
select distinct extract(WEEK from dates) WeekNO
from yourtable
デモで SQL Fiddle を参照してください
yourtable
をテーブル名とdates
日付列に置き換えます。
編集#1:MS Accessを使用している場合は、引き続き使用できますDatePart()
(これはMS Access 2003でテストされました):
SELECT distinct datepart("ww", dates) as WeekNo
FROM yourtable;
オンロード イベント、または必要な場所に、この VBA コードを配置します。
Me!myCombo.RowSource = "yourquerytexthere;"
(または、どのクエリを使用しても..おそらく、Remou が回答した最後の質問から使用しているクエリ)。
この質問では、何を照会したいのかをすでに知っていると思います。コントロールの設定について尋ねているだけです。
そのコードはただ
Me!myCombo.RowSource = "yourquerystring"
お気に入り
Me!myCombo.RowSource = "SELECT distinct datepart("ww", dates) FROM yourtable;"
Me!myCombo はコンボボックスの名前です。
年間 ISO 週番号テーブル - Oracle SQL クエリ:
-- ISO_WK# --
SELECT mydate
, TRUNC(mydate, 'w') wk_starts
, TRUNC(mydate, 'w') + 7 - 1/86400 wk_ends
, TO_NUMBER (TO_CHAR (mydate, 'IW')) ISO_WK#
FROM
(
SELECT TRUNC(SYSDATE, 'YEAR')-1 + LEVEL AS mydate
FROM dual
CONNECT BY LEVEL <=
(-- First day of curr year - first day of past year --
SELECT TRUNC(SYSDATE, 'YEAR')-TRUNC(ADD_MONTHS (SYSDATE, -12), 'YEAR') "Num of Days"
FROM dual
)
)
/