SQLで日付だけで検索する方法
- 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で検索が出来るか と言う事です。 解りにくいかと思いますがどうぞよろしくお願い致します!
- PACQUIAO
- お礼率27% (53/191)
- その他(データベース)
- 回答数2
- ありがとう数14
- みんなの回答 (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'
その他の回答 (1)
- ztk
- ベストアンサー率0% (0/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'
補足
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 & " ; " としても、結果は同じでした。 いろいろ試してみたのですが、どうしてもうまく行かず困っています。 どなたかおわかりの方おられましたら、教えて下さい。
- ベストアンサー
- Visual Basic
- 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を書けば良いか教えてください。
- ベストアンサー
- Oracle
- 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)
- ベストアンサー
- PostgreSQL
- 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です。
- 締切済み
- その他MS Office製品
- 日付検索で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のデータしか検索できない。 時間が邪魔してできないのでしょうか? (無理矢理「*」を組み込んだのですがダメでした・・) どなたか教えてください。お願いします。
- ベストアンサー
- オフィス系ソフト
お礼
itu1989 様 皆様本当に早いレスポンスに感謝します! TO_CHARはうまくいきませんでしたが、||でつなげて無事エクスポート出来ました~ ありがとうございました!!