SQLで日付だけで検索する方法

このQ&Aのポイント
  • SQLの日付時刻のカラムから日付だけで検索する方法について教えてください。
  • 特定の日付で伝票を表示するために、SUBSTR関数を使用して日付部分を抽出し、検索条件に設定する方法を教えてください。
  • 更に応用して特定の形式で日付を検索する方法についても教えてください。
回答を見る
  • ベストアンサー

SQLの日付時刻のカラムから日付だけで検索したい2

こんにちは。 自分はデータベースの初心者です。 先程質問した内容にすぐにレスを入れて頂きました。 そこからもう一つ質問があったので別にここに作ります。 あるデータベーステーブルの中に日付時刻が混じったカラムがあります。 伝票のデータなんですが、伝票が作成された情報が chk_open_date_time というカラムで、実データは '2013-11-15 12:19:31.000'; と言った形になってます。 伝票を任意の作成日付で表示できないといけないのですが、ネットで見てもそこがよく解りません。 where の条件句で、2013年11月15日の伝票を出す、と言った事がしたいです。 これにレストつけてくれた方が居て教えて貰ったのが以下の (1)SUBSTRで必要部分を取り出して検索する SELECT * FROM テーブル名 WHERE SUBSTR(chk_open_date_time,1,10) = '2013-11-15' です。 これを応用して「20131155」で検索する事は可能でしょうか? WHERE SUBSTR(chk_open_date_time,1,10) となっている部分は左から1つ目から10文字という意味だと思うのですが、 左から1つ目から4文字、左から6つ目から2文字、左から9つ目から2文字 で 20131115で検索が出来るか と言う事です。 解りにくいかと思いますがどうぞよろしくお願い致します!

質問者が選んだベストアンサー

  • ベストアンサー
  • itu1989
  • ベストアンサー率44% (37/83)
回答No.2

#1の方と書き方が違うだけですが、 SELECT * FROM テーブル名 WHERE SUBSTR(chk_open_date_time,1,4) || SUBSTR(chk_open_date_time,6,2) || SUBSTR(chk_open_date_time,9,2) = '20131115' 後、カラムの型がもしDATE型の場合、TO_CHARでフォーマットしてみる SELECT * FROM テーブル名 WHERE TO_CHAR(chk_open_date_time, 'YYYYMMDD') = '20131115'

PACQUIAO
質問者

お礼

itu1989 様 皆様本当に早いレスポンスに感謝します! TO_CHARはうまくいきませんでしたが、||でつなげて無事エクスポート出来ました~ ありがとうございました!!

その他の回答 (1)

  • ztk
  • ベストアンサー率0% (0/1)
回答No.1

考え方は合っていますので、下記のように記述できます。 WHERE CONCAT(SUBSTR(chk_open_date_time,1,4),SUBSTR(chk_open_date_time,6,2),SUBSTR(chk_open_date_time,9,2)) = '20131115'

PACQUIAO
質問者

補足

ztk 様 本当に早いレス助かります!ありがとうございます。 ただ同じ様に行っても出てきてくれませんでした。。 SybaseというSQLエンジンを使用していて、WEBで調べる限りCONCATも使用出来そうなんですが、 Executeするとエラーが返ってきます。 error at line 1 procedure 'concat' not found となります。 なぜなのか解りませんが、もし他の方法があれば教えて下さい。 よろしくお願い致します!

関連するQ&A

  • SQLの日付時刻のカラムから日付だけで検索したい

    こんにちは。 自分はデータベースの初心者です。 仕事で急きょ勉強しなければならなくなりました。 あるデータベーステーブルの中に日付時刻が混じったカラムがあります。 伝票のデータなんですが、伝票が作成された情報が chk_open_date_time というカラムで、実データは '2013-11-15 12:19:31.000'; と言った形になってます。 伝票を任意の作成日付で表示できないといけないのですが、ネットで見てもそこがよく解りません。 where の条件句で、2013年11月15日の伝票を出す、と言った事がしたいです。 どう言った形で行う事が出来ますか? 他のカラムで日付だけと言うのはありませんでした。 どなたか教えてください! よろしくお願いします!

  • ExcelVBAでSQLサーバの日付時刻型参照

    Excel/VBA(Excel2003)で開発しています。 SQL Server上のデータをSQLで参照する際、WHERE条件句に日付を範囲指定するのですが、 全く無視され、全日付のデータが読まれてしまいます。   ・SQL Server上のデータテーブル:MEISAI       日付項目名:伝票日付 (データ型 = 日付/時刻, サイズ = 8)   ・範囲指定もとデータ:inpDate1,inpDate2 AS String inpDate1 の内容 = "2011/06/01" (FormのDateTimePickerで指定する。) inpDate2 の内容 = "2011/06/10" (同上) の時、SQL文は下記の通りです。 SELECT * FROM MEISAI WHERE 伝票日付 >= '" & inpDate1 & _ "' AND 伝票日付 <= '" & inpDate2 & "' ; " また、inpDate1,inpDate2をいったん Date型に変換し、 Dim Dt1 AS Date DimDt2 AS Date Dt1 = CDate(inpDate1) Dt2 = Cdate(inpDate2) SELECT * FROM MEISAI WHERE 伝票日付 >= " & Dt1 & " AND 伝票日付 <= " & Dt2 & " ; " としても、結果は同じでした。 いろいろ試してみたのですが、どうしてもうまく行かず困っています。 どなたかおわかりの方おられましたら、教えて下さい。

  • SQLで特定のテキストの文字を読み込みたい

    こんにちは。 SQL初心者です。 皆様に本日たくさん助けて頂いてます。 本当に感謝です。今一度お助けお願いします! あるテーブルをエクスポートしたいのですが データを日付で区切りたいと思っています。 エクスポートするマシーンにいつも特定のテキストがあります。 それをDATE.txtとするとその中には20131115などと書かれています。 これはもちろん日付です。 where 以下の条件にこの日付を用いたいのですが それにはどのように設定すればいいのでしょうか? where open_chk_date = <DATE.txtの中の日付> こんな感じです。 どうぞよろしくお願いします!

  • コラムの値からコラム・テーブルを検索

    プライマリキーが様々なテーブルで別の名前で利用されていると、テーブル同士の関連の全てが把握できずに困っています。以前にコラム名からテーブルを検索する方法を質問したのですが、私が扱っているデータベースでは、プライマリキーがシステムの別の場所で少しだけ異なる名前で利用されていることが多いので、その方法では把握できない関連が出てきます。 具体的には、EMPLOYEES__KEYというEMPLOYEESテーブルのプライマリキーがPERSONALIZE_EMPOYEESというテーブルでPSNLZ_EMP__KEYという名前で使われている状況を考えていただきたいと思います。PSNLZ_EMP__KEYのコラムのレコードは全てEMPLOYEES__KEY内のデータからとられているとします。 以前にselect TABLE_NAME from USER_TAB_COLUMNS where COLUMN_NAME = 'EMPLOYEES__KEY' というSQLで特定のコラムを使っているテーブルを全てリストアップできると教えていただいたのですが、今回のケースでは、同じような内容のコラムなのですが名前が異なるため上記のSQLでは検索できないテーブルがある場合、それをどうやってとってきたらよいのかということです。 コラムの値にtaro, jiro, hanakoなどのようにテーブルまたはシステム内でユニークな値が指定されている場合、コラムの値を指定し、「その値が使われているコラム・テーブルを列挙せよ」というような命令を与えればよいのだということまでは分かりますが、どのようにSQLを書けば良いか教えてください。

  • postgreSQLで分からないことがあります。

    postgreSQLで分からないことがあります。 よろしくお願いします。 下にあるtblというテーブルがあったとき。 下のSQLを実行するとデータがうまく取れているんですが、 CURRENT_DATEは日付型でSUBSTRでとりだした日付は文字列 なのに何故正しく比較できているのでしょうか? 日付型の形式の文字列であれば、RDBMSがかってに日付型にしてくれるのでしょうか? tblテーブル *sdateとedateはtimestamp型です。 sdate      | edate | ----------------------------------------- 2010-5-1 10:00:00 | 2010-5-2 13:00:00| SELECT * FROM tbl WHERE CURRENT_DATE BETWEEN SUBSTR(sdate, 1, 10) AND SUBSTR(edate, 1, 10)

  • mysqlでdate型のカラムに今日から1年分の日付を挿入するSQLは

    mysqlでdate型のカラムに今日から1年分の日付を挿入するSQLは書けますでしょうか ・テーブル  T_TEMP ・カラム  M_DATE (DATE型) ・SQL  insert into T_TEMP (select ???); 以上、よろしくお願いいたします。

    • ベストアンサー
    • MySQL
  • Access SQL日付時間型検索

    Accessで以下SQLを書いたのですが SQLC = "SELECT * FROM tbl_data where date_end = #"&tmp_date_end&"#" ”引数が間違った型、許容範囲外、または競合しています。 ” とですます。 何か書き方の誤りがあるのでしょうか? テーブル名 tbl_data のフィールド名date_end から変数tmp_date_endと同一データ検索文です。 DBの型は日付時間型です。 変数はyyyy/mm/ddです。

  • 日付検索で0000-00-00 00:00:00を除外したい

    日付検索で0000-00-00 00:00:00を除外したい mysql5.0 データ型はdatetimeで日付検索をしたのですが、 日付が"0000-00-00 00:00:00"で登録されているデータも 検索結果に表示され困っています。 例えば、 SELECT * FROM user_tbl WHERE (DATE( hizuke ) <= '20100505') →これだと、hizukeが0000-00-00 00:00:00のデータも表示されてしまいます。 日付が0000-00-00 00:00:00で登録されているデータを除外するため 自分もいろいろしてみたのですができません。どなたか教えていただけないでしょうか。 参考までに、自分が試したsql文を書きます。↓ SELECT * FROM user_tbl WHERE (DATE( hizuke ) <= '20100505') and (hizuke != '0000-00-00 00:00:00') SELECT * FROM user_tbl WHERE (DATE( hizuke ) <= '20100505') and (hizuke <> '0000-00-00 00:00:00') SELECT * FROM user_tbl WHERE (DATE( hizuke ) <= '20100505') and (hizuke not in ('0000-00-00 00:00:00')) →上記載のsqlはすべて検索件数が0になってしまいました。 もうわからなくなってしまったので、アドバイスお願いします。

    • ベストアンサー
    • MySQL
  • ACCESS 日付検索がうまくいきません

    下記の形式でテーブルに日付データ(訳ありでテキスト型)が格納されています。 yyyy/mm/dd hh:mm:ss 日付のみ入力し下記のSQLで検索してもFromTimeの日付のみのデータしか検索できません。 SELECT * FROM T_A WHERE Access_Time BETWEEN #" & FromTime & "# AND #" & ToTime & "#" (例) FromTime  ToTime 2007/01/01 2007/01/05 2007/01/01のデータしか検索できない。 時間が邪魔してできないのでしょうか? (無理矢理「*」を組み込んだのですがダメでした・・) どなたか教えてください。お願いします。

  • 検索条件の日付の型

    お力を貸してください。 データベースから現在年月日のものだけ抽出したいのですが、 日付の型が合わないからなのか、抽出できません。 dt_fromカラムには表示開始日時 dt_toカラムには表示終了日時が入ってます。 $from = date('Y-m-d 00:00:00'); $to = date('Y-m-d 23:59:59'); $sql = "SELECT * FROM data WHERE dt_from = $from AND dt_to = $to "; どこかおかしい点があればご指摘ください。 よろしくお願い致します。

    • ベストアンサー
    • MySQL