いつもお世話になっております。
現在PL/SQLでデータの抽出を行う課題に
取り組んでいるのですが、
期間を指定してデータを取り出す際に
期間はパラメータで渡すのですが、
【例】
2009/1/1~2009/6/30と指定された場合、
日付変数 BETWEEN 20090101 AND 20090630
上期のですと、6/30の0時0分0秒までですよね?
これを6/30 23時59分59秒まで出力するためには
どうしたらよいでしょうか?
ちなみに、日付変数には年月日時分秒で入っていて、
期間の指定は出力の際にYYYYMMDDで指定することに
なっています。
終了を2009/7/1で指定して1秒引くのかなとも
思ったのですが、できれば、指定された
日付のみを使って抽出ができればと思っています。
もし何か方法がありましたら、教えていただけないでしょうか?
よろしくお願いいたします。
No.2ベストアンサー
- 回答日時:
trunc(日付変数) BETWEEN 20090101 AND 20090630
これが希望の答えではありませんか?
No.1の方も同じことを示唆していると思います。
ただし、この条件句ではパフォーマンスが悪くなることがあります。
丁寧なご説明ありがとうございます。
No.1の方に教えていただいたURLを読んで
日付変数 BETWEEN start AND trunc(end)
とやっておりました。
初心者なので、分かりやすく教えていただき
本当に助かりました。ありがとうございます。
No.3
- 回答日時:
時間を除く日付での範囲条件を書くなら、
where trunc(日付変数) between to_date(start,'yyyymmdd') and to_date(end,'yyyymmdd');
と書くのが適切かと思いますよ。
DATE型に、数値や文字列の定数や変数を比較させると暗黙の型変換が行われますので、場合によっては誤動作の種になります。
No.1
- 回答日時:
>日付変数
上記はDATE型のことですよね。
こういう場合は以下URLのようにします。
ききたいのはこのことですよね?
http://itpro.nikkeibp.co.jp/article/COLUMN/20060 …
この回答への補足
教えていただいたURLはすでに見ていたのですが、
探しているものと少し違いました。
パラメータを使うので、
:
WHERE 日付変数 BETWEEN start AND end;
と指定して、
EXECUTE('20090101','20090630')と入力して実行しています。
URLのを参考に
WHERE 日付変数 BETWEEN start AND trunc(end);
としましたが、2009-06-30 23:59:59は出力されませんでした。
No.2の方に細かく説明していただき
結果が無事出力されました。
初心者なので、理解が不十分で
『少し違いました』などと勘違いをしてしまい
申し訳ありませんでした。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excel について <TIMEVALUE> 3 2022/10/20 15:57
- C言語・C++・C# C言語初心者 構造体 課題について 1 2023/03/10 19:30
- PHP 配列の値の更新方法について 1 2022/08/05 09:49
- その他(社会・学校・職場) 5月5日までに提出して下さい。 これは、5月5日の23時59分59秒までなら大丈夫。 と解釈したつも 5 2022/06/08 18:13
- その他(Microsoft Office) Excelで時間計算(負) 8 2023/02/26 05:47
- Visual Basic(VBA) vba 等間隔の列に対しての計算 6 2022/05/17 20:15
- その他(プログラミング・Web制作) テキストデータ変換(プログラミング、linux、python) 8 2023/08/08 16:39
- 法学 条約の失効日は、何時何分に明確に失効となりますか? 日ソ中立条約 2 2022/05/22 13:40
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- スピーカー・コンポ・ステレオ cueシートのpregapについて 1 2023/05/13 19:59
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SQLサーバで和暦から西暦に変換...
-
14桁の日付(YYYYMMDDHHMMSS)を...
-
今日の日付が入った行のデータ...
-
指定した年月までのデータを取...
-
エクセル 日付による並べ替え...
-
oracle 文字列 01:45 を時間に...
-
エクセルのヘッダーを変数で指...
-
SQLで部分的にGROUP BYしたいとき
-
Accessの数値から時間に変換す...
-
Excelグラフの日付軸の日付がず...
-
Excelの並び替え(先頭の文字以...
-
一秒ごとに更新をかける方法
-
日付書式に変換でこまっています!
-
WHERE句にて「30日前から今日ま...
-
SELECT結果の縦と横の入れ替え
-
特定の日付が第何週目にあるか...
-
23時59分59秒までのデータを抽...
-
日付の切り出し方法について
-
日付時刻+連番の主キーをSQLだ...
-
日付型なら変数の先頭になん...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Accessの数値から時間に変換す...
-
今日の日付が入った行のデータ...
-
エクセル 日付による並べ替え...
-
SQLサーバで和暦から西暦に変換...
-
SQLで部分的にGROUP BYしたいとき
-
14桁の日付(YYYYMMDDHHMMSS)を...
-
ExcelのSUMPRODUCTで日付の範囲...
-
テーブルの主キーをdate型...
-
Excelグラフの日付軸の日付がず...
-
oracle 文字列 01:45 を時間に...
-
23時59分59秒までのデータを抽...
-
SQL スクリプトのご相談
-
WHERE句にて「30日前から今日ま...
-
指定した年月までのデータを取...
-
DB2のSQL(日付)について
-
yyyy/M/dをyyyy/MM/ddに変換
-
重複するIDのデータを1行にま...
-
日付型なら変数の先頭になん...
-
日付書式に変換でこまっています!
-
Excelの並び替え(先頭の文字以...
おすすめ情報