我試圖獲取記錄,其中列值包含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
。我怎樣才能做到這一點?
我試圖獲取記錄,其中列值包含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
。我怎樣才能做到這一點?
您可以將當前日期轉換格式的字符串你與
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') || '%';
的like
運營商與%
通配符配對應該幫助你。
select file_name
from my_files
where file_name like '%2016-05-06%'
上述select
■從my_files
table
包含'%
和%'
之間封閉的字符串的所有文件名稱的查詢。
如果你得到這樣的文件的數量,那麼你需要的東西是這樣的:
select count(*)
from my_files
where file_name like '%2016-05-06%'
我不能硬編碼的日期。我想過濾具有當前日期的文件。 – Midhun
這是如何獲取當前日期:https://docs.oracle.com/cd/B19306_01/server.102/b14200/functions172.htm 如果我是你,我會爲此寫一個存儲函數,將使用要檢查的日期作爲參數。從長遠來看,這可能非常有用。 –
如果你想匹配系統的當前日期,你可以從系統使用當前日期。這適用於Oracle,但其他數據庫可能有不同的方法。
SELECT file_name
FROM MY_FILES
WHERE file_name LIKE '%' || TO_CHAR(SYSDATE, 'RRRR-MM-DD') || '.txt'
但是,這通常是一個糟糕的決定。這意味着代碼將不會在除當前系統日期之外的任何日期工作。將日期作爲參數傳遞或從另一個表中獲取它會更好。
咦?不知道你在問什麼。請顯示示例表格數據,查詢和預期輸出。 – OldProgrammer
日期是否始終採用該格式?爲什麼標題也是指時間?這看起來很簡單,但是您可以添加更多的數據和預期的結果,以及您所做的任何查詢嘗試以及它們錯誤的原因? –
文件名將有日期(yyyy-MM-dd)格式。我想篩選其中有當前日期的記錄。 – Midhun