プロが教える店舗&オフィスのセキュリティ対策術

こんにちは。

自分はデータベースの初心者です。
先程質問した内容にすぐにレスを入れて頂きました。

そこからもう一つ質問があったので別にここに作ります。

あるデータベーステーブルの中に日付時刻が混じったカラムがあります。
伝票のデータなんですが、伝票が作成された情報が
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で検索が出来るか と言う事です。

解りにくいかと思いますがどうぞよろしくお願い致します!

A 回答 (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'
    • good
    • 0
この回答へのお礼

itu1989 様
皆様本当に早いレスポンスに感謝します!

TO_CHARはうまくいきませんでしたが、||でつなげて無事エクスポート出来ました~

ありがとうございました!!

お礼日時:2013/11/18 14:56

考え方は合っていますので、下記のように記述できます。



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 となります。
なぜなのか解りませんが、もし他の方法があれば教えて下さい。
よろしくお願い致します!

補足日時:2013/11/18 14:37
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!