先週作成されたレコードセットと、6h45と19h15の間に作成されたものだけを取得するレコードセットがあります。私は使用できる列creation_date
を持っています。SQL:特定の日付の時間範囲で作成されたレコードを取得する
私はこれをSQLで行うことができますか?
先週作成されたレコードセットと、6h45と19h15の間に作成されたものだけを取得するレコードセットがあります。私は使用できる列creation_date
を持っています。SQL:特定の日付の時間範囲で作成されたレコードを取得する
私はこれをSQLで行うことができますか?
Oracleでは、日付を数値に変換し、さまざまな方法で算術演算を適用できます。
たとえば、sysdate-7
は7日前に日付を返します。 trunc(some_date)
は、日付列から時間要素を削除します。 to_char(some_date, 'SSSSS')
は、真夜中からの秒数としてtime要素を返します。だから06:45:00は24300秒で、18:15:59は69359秒です(これらの数字は封筒の後ろにあるので確認してください)。
とにかく、...このような単一のクエリでそのすべて一緒に入れて
select *
from your_table
where creation_date >= trunc(sysdate)-7
and to_number(to_char(creation_date, 'sssss')) between 24300 and 69359
...コア時間内の時間要素と先週に作成されたすべてのレコードを作るウィル。
上記の基準に基づいて、これは、06:45:00と19:15:59の時間の日曜日から土曜日の先週の記録を戻します。
週の範囲が異なるようにする場合は、「 - 7」と「+ 6」を異なる数字に調整できます(たとえば、週が月曜日から日曜日の場合など)。
select *
from your_table
where creation_date >= TRUNC(SYSDATE, 'WW') - 7
and creation_date <= (TRUNC(SYSDATE, 'WW') - 7) + 6
and to_char(creation_date, 'hh24:mi:ss') >= '06:45:00'
and to_char(creation_date, 'hh24:mi:ss') <= '19:15:00'
答えるためのおかげで、私は2012年2月27日 –
@MMCのような特定のものではない、私のテーブルに異なる日付を持っている - そう、あなたはこれがダイナミックになりたいですか?同様に、あなたはそれを実行する日にかかわらず、7日間のレコードを取得するだけですか? –
はい先週作成されたものですが、02/27/2012を今日の日付で置き換えた場合、昨日作成されたレコードの例は06:30になりません –
このクエリは、作成日の時間部分を午前6時45分から午後7時15分までの間に作成した過去7日間に作成されたレコードを返します。
select *
from your_table
where creation_date > sysdate - 7
and to_char(creation_date, 'hh24:mi:ss') >= '06:45:00'
and to_char(creation_date, 'hh24:mi:ss') <= '19:15:00'
+1、今週からレコードを戻すことはありませんか? –
+1、今週からの記録も戻しませんか? –
「先週」にあいまいさがあります。私はそれを「過去7日間」という意味にしましたが、おそらくあなたは何か違うものを意味していました。 – APC
ありがとう、私は欲しがったように働いています。「最後の7日間」は私が意味していたものです。 –