2016-05-05 9 views
-2

file_name列の値に現在の日付がYYYY-MM-DD形式で格納されているレコードを取得しようとしています。私のテーブルがある場合例: 現在の日付のレコードをフィルタリングする方法

abcd_2016-05-06.txt 
asd-2016-05-04.txt 
axx_2016-05-03.txt 
と私は2016年5月6日にクエリを実行し、私は結果セットに abcd_2016-05-06.txtを取得したいです。どうやってやるの?

+1

?あなたが何を求めているか分かりません。サンプルのテーブルデータ、クエリ、期待される出力を表示してください。 – OldProgrammer

+0

日付は常にその形式ですか?なぜタイトルも時間を参照していますか?これはかなりシンプルなようですが、あなたが行ったクエリの試行とそれが間違っている理由とともに、より多くのデータと期待される結果を追加できますか? –

+0

ファイル名の日付(yyyy-MM-dd)format.iには、現在の日付を持つレコードをフィルタリングします。 – Midhun

答えて

0

あなたはその後、'%2016-05-05%'のような値を形成するために、ワイルドカード文字とそれを連結することができますが、

to_char(sysdate, 'YYYY-MM-DD') 

を示してきた形式の文字列に現在の日付を変換することができます。その後、the like pattern-matching conditionで、文字列ワイルドカードに一致している任意の値を見つける:%ワイルドカードとペア

select file_name -- or count(*), or whatever columns you want 
from your_table 
where file_name like '%' || to_char(sysdate, 'YYYY-MM-DD') || '%'; 
0

likeオペレータはあなたを助ける必要があります。

select file_name 
from my_files 
where file_name like '%2016-05-06%' 

selectの上記のクエリ'%%'の間で囲まれた文字列が含まれているmy_filestableからすべてのファイル名。

あなたがそのようなファイルの数を取得する場合は、このような何か必要があります:あなたはシステムの現在の日付と一致するように欠けている場合は、システムから現在の日付を使用することができ

select count(*) 
from my_files 
where file_name like '%2016-05-06%' 
+0

日付をハードコードできません。私は現在の日付を持つファイルをフィルタリングしたかったのです。 – Midhun

+0

これは、現在の日付を取得する方法です。https://docs.oracle.com/cd/B19306_01/server.102/b14200/functions172.htm 私があなたの場合は、この目的のためにストアド・ファンクションを作成し、チェックする日付をパラメータとして使用します。それは長期的には非常に役立つことがあります。 –

1

を。これはOracle上で動作しますが、他のデータベースには異なる方法があります。

ただし、これはしばしば不適切な決定です。つまり、現在のシステム日付以外の日付にはコードが機能しません。日付をパラメータとして渡すか、別のテーブルから取得する方がはるかに良いでしょう。

+0

ありがとうございます..それは私のために働いた.. – Midhun

+0

@ミドン - これはあなたのために働く場合は、答えとしてマークしてください。ありがとう。 – lit

+0

@Midhun - [誰かが私の質問に答えたときにどうすればいいですか?](http://stackoverflow.com/help/someone-answers)を参照してください。 (私は少し質問がありましたが、この回答はうまくいきますが、私のことはそうではありません。txtファイル - これは要件ではありませんでした - それは同じことをしています) –

関連する問題