| 中 | M_NAME | DEPT_ID | 開始日期 | 結束日期 | 薪水 |
|---|---|---|---|---|---|
| M001 | 里查 | D001 | 2007 年 1 月 27 日 | 2007 年 2 月 27 日 | 150000 |
| M002 | 尼丁 | D002 | 2007 年 2 月 16 日 | 2007 年 5 月 16 日 | 40000 |
| M003 | 阿吉特 | D003 | 2007 年 3 月 8 日 | 07 年 9 月 8 日 | 70000 |
| M004 | 夏瓦里 | D004 | 2007 年 3 月 28 日 | 2008 年 3 月 28 日 | 120000 |
| M005 | 阿迪亞 | D002 | 2007 年 4 月 27 日 | 2007 年 7 月 27 日 | 40000 |
| M006 | 羅漢 | D004 | 2007 年 4 月 12 日 | 2008 年 4 月 12 日 | 130000 |
| M007 | 烏沙 | D003 | 2007 年 4 月 17 日 | 2007 年 10 月 17 日 | 70000 |
| M008 | 安賈利 | D002 | 2007 年 4 月 2 日 | 2007 年 7 月 2 日 | 40000 |
| M009 | 亞什 | D006 | 07 年 4 月 11 日 | 2007 年 7 月 11 日 | 85000 |
| M010 | 納里尼 | D007 | 2007 年 4 月 15 日 | 07 年 10 月 15 日 | 9999 |
我想過濾掉 start_date 為 Mar-07 的員工,我在下面嘗試了相同的查詢,但沒有選擇任何行。我的方法錯了嗎?
SELECT *
FROM EMP_TABLE
WHERE START_DATE LIKE '%Mar-07%';
我的表結構也是這樣的:
Name Null? Type
M_ID VARCHAR2(4)
M_NAME VARCHAR2(20)
DEPT_ID CHAR(4)
START_DATE DATE
END_DATE DATE
SALARY NUMBER(6)
uj5u.com熱心網友回復:
您當前的查詢:
SELECT * FROM EMP_TABLE WHERE START_DATE LIKE '%Mar-07%';
依賴于使用會話 NLS 設定將每個日期隱式轉換為字串,然后進行字串比較。雖然這可能有效,但看起來您的 NLS 設定似乎與該格式不匹配——PL/SQL Developer 可能正在格式化日期本身——或者你實際上看到MAR-07并且沒有正確匹配大小寫。
TO_CHAR(START_DATE)您可以通過選擇或查詢視圖來查看您的 NLS 設定nls_session_parameters。
在任何情況下,最好搜索一個日期范圍,而不是轉換為字串:
SELECT * FROM EMP_TABLE
WHERE START_DATE >= DATE '2007-03-01'
AND START_DATE < DATE '2007-04-01'
請注意,這只會找到 2007 年的日期,而您的原始日期將包括 1907、1807 等 - 但這可能是您真正想要的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/522693.html
標籤:sql甲骨文
上一篇:使用包含兩個串列的資料框使用matplotlib創建繪圖
下一篇:如果同一商品在不同的日子找到購買
