2016-05-05 55 views
-2

我試圖獲取記錄,其中列值包含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)格式。我想篩選其中有當前日期的記錄。 – Midhun

回答

0

您可以將當前日期轉換格式的字符串你與

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

然後,您可以連接與通配符形成像'%2016-05-05%'值顯示;然後找到通配符字符串,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,但其他數據庫可能有不同的方法。

SELECT file_name 
FROM MY_FILES 
WHERE file_name LIKE '%' || TO_CHAR(SYSDATE, 'RRRR-MM-DD') || '.txt' 

但是,這通常是一個糟糕的決定。這意味着代碼將不會在除當前系統日期之外的任何日期工作。將日期作爲參數傳遞或從另一個表中獲取它會更好。

+0

非常感謝..它爲我工作.. – Midhun

+0

@Midhun - 如果這適用於您,請將其標記爲答案。謝謝。 – lit

+0

@Midhun - 請參閱[當某人回答我的問題時該怎麼辦?](http://stackoverflow.com/help/someone-answers)。 (雖然我很好奇,爲什麼這個答案有效,但我不知道,除了限制你。txt文件 - 這不是要求 - 這是做同樣的事情。) –

相關問題