2017-10-30 18 views
0

特定の日付のために特定のタイムスタンプに基づいてテーブルから行のサブセットを抽出する(やや精巧な)SELECT文があります。穏やかな、何かのようなテーブルを作成する日付の範囲に対して `SELECT`を実行

ここで、@MyTimeはいくつかの日時パラメータです。私は、id,runTimecontrolDatecontrolDateのフィールドを持つ、すでに作成されたMyOutTableに結果を格納して、連続した日付の長い範囲(6月1日から今年の11月1日まで)の長時間の範囲でSELECTを実行する必要がありますIDを取得するために使用された日付の値で、runTimeは私のテーブルからです。

Pythonを使用しないでSQLでこれを行う簡単な方法はありますか?いくつかのストアドプロシージャは、開始日と終了日のパラメータを取って、必要なデータを生成し、出力テーブルに移入するとしますか?

ありがとうございました

あなたは、日付/時間でサブクエリを使用して joinロジックを使用することができます
+0

あなたは 'controlDate'が@MyTimeであることを意味しますか? – shockwave

+0

@shockwaveはい、しかし私はそれらの範囲を必要とします – gt6989b

答えて

1
INSERT INTO MyOutTable (ControlDate, id, runTime) 
SELECT '2017-10-30' as ControlDate, id, runTime 
FROM ... 
... 
WHERE runTime < @MyTime 

注意が何VALUESキーワードが存在しない、とControlDate値は定数のリテラルですが、ここでもCURDATE()などを使用できます。

+0

はい、しかし、私は制御の範囲を必要とするだけではなく、1 – gt6989b

+0

どのように特定の元のレコードの正しい日付を知っていますか? –

+0

あなたは何を求めているのか分かりません。 'controlDate'の範囲があり、6月1日から11月1日まで、それぞれのテーブルが必要です。 – gt6989b

0

select d.dte, . . . 
from (select cast('2017-06-01' as datetime) as dte union all 
     select cast('2017-06-02' as datetime) as dte union all 
     . . . 
    ) d join 
    . . . 
    on runTime < d.dte; 
+0

この方法では、私は内部選択でおよそ150の選択を書かなければなりません、 '2017-06-01'から' 2017-11-01 '? – gt6989b

+0

@ gt6989b。 。 。 Sybaseの場合、わかりません。カレンダーテーブルを使用できます。 SQL Serverでは、再帰CTEを使用できます。多分Sybaseには別のトリックがあります。 –

関連する問題