2012-12-17 52 views
-1

我有這個疑問得到拖日期之間的所有數據是這樣的:錯誤上搜索最新的SQL

SELECT * 
FROM cashier_trans 
WHERE cashier_trans_Customerid LIKE '%kam%' 
OR cashier_trans_Date 
BETWEEN '2012/12/01' 
AND '2012/12/02' 
ORDER BY cashier_trans_Customerid, cashier_trans_DocType, cashier_trans_DocId ASC 

我從數據庫中檢索數據:

Name  Date 
kam  16/12/2012 

爲什麼我在16/12/2012

檢索日期
+0

''2012/12/01''是** not ** a日期,它是一個字符文字。您的SQL依賴隱式數據類型轉換,可能無法達到您期望的效果。如果你有一個符合標準的數據庫,你應該使用一個真正的日期文字,例如'日期'2012-12-01''。您還應該提及您正在使用的DBMS。甲骨文? PostgreSQL的? DB2? –

回答

1

看看where子句的條件:

WHERE 
    cashier_trans_Customerid LIKE '%kam%' 
    OR <------------- 
    cashier_trans_Date BETWEEN '2012/12/01' AND '2012/12/02' 

您顯示的數據包含名稱='kam',因此滿足WHERE條件。

+0

謝謝先生求助 –

0

'cashier_trans_Date'表中的列格式爲'mm/dd/yyyy'。但在查詢中,您使用的是'yyyy/mm/dd'格式。 這將幫助你,

SELECT * 
FROM cashier_trans 
WHERE cashier_trans_Customerid LIKE '%kam%' 
OR cashier_trans_Date 
BETWEEN '12/01/2012' 
AND '12/02/2012'; 

除了「其中」條款在您使用的是像「%錦%」。所以很明顯你會收到'kam'的記錄

+0

謝謝先生求助 –

+0

不客氣:)也許是你可以投我的答案,如果它對你有用 – Mari