2017-06-08 11 views
0

隔週払いの日付のためにインポートされたテーブルに基づいて、現在および最後の支払期間を表示する必要があります。テーブルには、次のようになります。SQLでの現在および前払い期間の表示(インポートされたテーブルに基づく)

2017-03-23 00:00:00 2017-04-06 00:00:00 
2017-04-07 00:00:00 2017-04-20 00:00:00 
2017-04-21 00:00:00 2017-05-06 00:00:00 
2017-05-07 00:00:00 2017-05-20 00:00:00 
2017-05-21 00:00:00 2017-06-05 00:00:00 
2017-06-06 00:00:00 2017-06-22 00:00:00 
2017-06-23 00:00:00 2017-07-06 00:00:00 
2017-07-07 00:00:00 2017-07-21 00:00:00 

このコード:

 SELECT * 
    FROM 
     table1 
    WHERE 
     (start_date <= now() AND end_date >= now()) 

ディスプレイ:私は、以前の給与期間を表示することができますどのように

2017-06-06 00:00:00 2017-06-22 00:00:00 

? のような:

2017-05-21 00:00:00 2017-06-05 00:00:00 

このコードは、ちょうどさえ正しく表示されませんが、私はとにかくそれを試してみました:

SELECT start_date, 
CASE 
    WHEN start_date = now() THEN start_date = now() - 1 
    WHEN end_date = now() THEN start_date = now() - 1 
END 
FROM table1; 

私はCASE WHENが、何らかの理由でを使用する方法があります知っている、I now()を使用して構文を正しく取得することができません。なぜなら、静的な日付ではなく動的なものにしたいからです。

+0

を取得するには、この

を試してみてください? – maSTAShuFu

+0

@maSTAShuFuあなたは詳しく教えていただけますか? – codemonkey

+0

誰もあなたに答えを出すことはできませんが、後で – maSTAShuFu

答えて

0
SELECT concat(start_date,' ', 
CASE 
    WHEN start_date = now() THEN start_date = now() - INTERVAL 1 DAY 
WHEN end_date = now() THEN start_date = now() - INTERVAL 1 DAY 
END) AS PeriodOfPay 
FROM table1; 
+0

あなたのコードはテーブルのすべてを表示します(上記と同じです)。私は最後の賃金期間が必要です。 2017-05-21 00:00:00 2017-06-05 00:00:00 – codemonkey

+0

あなたの質問に対する私の理解に基づいて答えを編集しました。 –

0

現在および以前の給与期間のSQLデータベース

SELECT start_date, 
end_date 
FROM table1 
where start_date < now() 
ORDER BY start_date desc 
LIMIT 2; 
関連する問題