• ベストアンサー

日付の比較

pussyfootの回答

  • pussyfoot
  • ベストアンサー率28% (39/138)
回答No.3

データベースは何を用いてますか? データベースによって若干日付型の表記方法が違う場合がありますし、条件と比較する対象のフィールドの型によっても違います。 フィールドの型が日付型なら、条件にたいして明示的に日付として指定してやらないと、OS(データベース)任せで変換させる事になり、期待通りの結果が得られない場合があります。(いわゆつ2001年問題とかです。2001年問題については詳しくは検索してください。)

noname#1752
質問者

補足

Oracle8.1.6です。フィールドはDate型です。

関連するQ&A

  • 10gでの日付比較について教えてください。

    PL/SQLを8iで実行し、データ抽出できていたものが、10gで実行すると抽出できなくなりました。 処理の内容は、PL/SQL実行時に日付を引数として渡し、データ抽出する表の日付と比較するようにしています。 引数の値はCHAR(YYYY/MM/DD)で渡す為、表の日付(DATE型)をCHARに変換して比較しています。 記述は以下の通りです。(一部記載) WHEREの条件pDT_DATEを'2006/03/31'のように固定値で記述すると8iで実行した結果と同じデータが抽出できます。 回避方法のご指導をお願いします。 CREATE OR REPLACE PROCEDURE CMA010PB ( pDT_DATE IN VARCHAR2 --基準日 )   <中略> --CURSOR データ抽出 CURSOR cTRHKCursor IS SELECT TT.cd_cust AS cd_cust --顧客コード FROM t_torihiki_rireki TT --取引履歴 WHERE NVL(TO_CHAR(TT.dt_denp,'YYYY/MM/DD'),'0000/00/00') <= pDT_DATE; BEGIN FOR rTRHKCursor IN cTRHKCursor LOOP    <以下省略>

  • 日付型のデータを検索条件

    DATE型でINSERTした日付データが検索条件として効きません。 検索フォームに入力した日付に関係なく全てのレコードが出てしまいます。 以下、原因につきご教示いだけると幸いです、 ◆検索フォームは、以下の通りです。 <html><body> <form method="post" action="list.php"> <input type="text" name="date_more">以降 <input type="text" name="date_less">以前 </form> </body></html> ◆PHPは、日付欄に2005-06-01のように値が入力された場合のみ SQLに追加するようにしています。 //試験日 (値が入力されている場合のみSQL文に追加) if (strlen($date_more) > 0) { $sql .= " and (testdate >= $date_more)"; } if (strlen($testdate_less) > 0) { $sql .= " and (testdate <= $date_less)"; } ◆ $sqlをprintすると select * from mytable where (memo like '%%') and (testdate >= 2005-06-01) のように、SQL文はきちんと発行されているように思います。 よろしくお願い致します。

    • ベストアンサー
    • PHP
  • 最新の日付と2番目の日付のデータ取得方法

    SQL Server 2008 にて下記条件を満たしたデータの取得を行いたいです。 ・IDごとに、日付がある日以前で最新のものとその次の日付のデータ2件 ・ただし、その2件で価格が変わらなければ価格変動のあった日付のデータまでさかのぼる ・価格が同じデータの場合、古い日付のデータを取得 例: ・条件…日付が20040101以前 <検索対象データ> ID  日付    価格 ------------------------ 1   20000101   100 1   20010201   100 1   20020301   200 2   20020401   300 2   20000501  400 2   20010601   400 2   20030701   300 3   20000801   500 3   20010901  600 3   20040901  600 <取得したい結果> ID  日付    価格 ------------------------ 1   20020301   200 1   20000101   100 2   20020401   300 2   20000501  400 3   20010901  600 3   20000801   500 なるべく少ないSelect文で取得したいと考えております。 よろしくお願いします。

  • 日付/時刻型のフィールドに対してWhere条件を付ける方法

    VBAで開発しています。 Where句で、日付/時刻型のA_dateに対して WHERE A_date > 2008/05/01 といったような条件を付けたいのですが、 どうしてもうまくいきません。 WHERE A_date > Format(2008/05/01, "YYYY/MM/DD") のようにフォーマットしてみてもだめでした。 WHERE A_date > date() のような記述はちゃんと通るんですが、固有の日付とのSQLがうまくいきません。 日付/時刻型の条件付けは何か特別な記述が必要なのでしょうか? どなたかご回答よろしくお願い致します。

  • SQLで日付を条件に削除したい

    SQLで日付を条件に削除したい update の列にdatetime 型で更新日が入っています。 2010年の6月以降を削除したいのですが どうにもうまくいきません。(一応以下のようなことをやってみたりしました) どのように書いたらいいでしょうか?? DELETE FROM SYS WHERE update >#2010/06#

  • oracle 最新日付との比較

    いま、同一商品番号の最新日付を利用した条件が うまく作れず悩みながら色々試していますが、 うまくいきません。 やりたいことは、 1,AテーブルとBテーブルの 商品番号が同じ場合は除外します。 2,残されたデータから次はCテーブルの中にある 同一商品番号で、最新の日付が当月の場合はデータを残す。 つまり、前月以前のデータは除外となります。 1まではできています。 Select * from aテーブル where not exists (select 'X' from bテーブル where a.商品番号 = b.商品番号) この先上記sqlにつなげてmax関数くくった最新日付と システム日付を年月のみで比較する等試みましたが、 求めた結果になりません。 上記sqlでビューを作成してといったことは、 今回やらずに一つのsqlのみでできないかと 試行錯誤です。 よきアドバイスございましたら、 宜しくお願い致します。

  • 日付の比較について

    いつもお世話になります。 ファイルに記述された日付に7日を加算した値とlocationtimeで取得した値を比較したいのですが、記述方法が分かりません。 <ファイルは下記のようになっております。> 2006<>03<>28<>明細 これに7を加算した(7日後という意味です)locationtimeでreturn "$year/$mon/$day";の戻り値と比較した比較したいのですが、 どのようにしたらよいのでしょうか? どなたかご教示お願いいたします。

    • ベストアンサー
    • Perl
  • 日付を表示形式で戻すSQL文を書きたい

    2つの日付を与えてその2つの日付の間の日付を以下のような表形式で返すSQL文を作りたい。 可能でしょうか? 例えば、与える日付を以下の2つとして、 2012/01/05,2012/01/11 SQL文の実行結果は、 カラム名 2012/01/05 2012/01/06 2012/01/07 2012/01/08 2012/01/09 2012/01/10 2012/01/11 今回の例では、2012/01/05~2012/01/11までの7日間なので7件が返された。

  • SQLの構文で質問です。

    いつもお世話になっております。 SQLの構文で質問です。 テーブルを開いて、データの中から日付を絞って抽出したいのですが、 whereの後にどのような記述をすればいいのかわかりません。 なんとなく『>』を使ってやってみましたがうまく抽出できませんでした。 例えば、2008/12/01~2008/12/31の絞りで抽出できるようにしたいのですが。 SELECT * FROM 日付 WHERE (日付   2008 / 12 / 01    2008 / 12 / 31) すみません、SQLを使い始めて間もなく本を見てはいるのですがうまくいかないもので。 宜しくお願いします。

  • SQLの日付と、DBの日付項目に対する比較について

    よろしくお願いします。 以下のように、DBには年月日がCHARの8桁で格納されています。 20050125 20050126 20050127 20050128 20050130 20030201 20030202 この項目に対し、システム日付から過去一週間以内の 日付を取得したいのですが、文字型とSQLのDATE型の 比較はどのようにすればよろしいのでしょうか? よろしくお願いします。