2013-03-01 29 views
0

這是與mysql有關的查詢。我使用兩個表格創建了一個視圖...表格中的一個字段是「date」,沒有任何默認值(即null或dd-mm-yyyy或其他)。現在,當我使用[日期'2012-01-01'和'2012-03-31']運行條件查詢時,我得到的行數不同,然後我得到的行數[日期在'2012-1-1 '和'2012-3-31']。當比較數據時,在mySql中更改日期格式時出現不同結果

我在使用「desc viewName」後看到的一個更重要的事情是它顯示該日期的默認值爲'0000-00-00'。

如果查詢是如下,我會得到120行:

select * from billing_master where date(pay_date) between '2012-1-1' and'2013-1-1'; 

如果查詢是跟隨,我會得到45行:

select * from billing_master where date(pay_date) between '2012-01-01' and'2013-01-01'; 

有沒有人有一個想法它呢?

問候, Sohil S.

+0

Pay_date字段的DataType是什麼?它是約會嗎? – 2013-03-01 19:15:49

回答

0

假設你pay_date字段的數據類型爲DATE,

DATE_FORMAT(pay_date,'%Y-%m-%d') 

,如果它的類型是VARCHAR等,你只是把它轉換爲DATE本身

DATE_FORMAT(DATE(pay_date),'%Y-%m-%d') 

您的查詢看起來應該是這樣的:

SELECT * FROM billing_master 
WHERE DATE_FORMAT(DATE(pay_date),'%Y-%m-%d') 
BETWEEN '2012-01-01' AND '2013-01-01'; 
+0

感謝您的回覆...我試着用兩種不同的條件,即'2012-01-01'和'2013-01-01'之間以及'2012-1-1'和' 2013-1-1「,他們顯示出不同的結果......它真的很奇怪...... – Sohil 2013-03-02 14:13:38

+0

你試過搜索,如果你有值'2012-1-1'? MySQL使用前導零來存儲日期,所以我認爲這與你存儲的值有關。 – 2013-03-03 03:23:04

+0

我使用select查詢了日期列表,並沒有找到任何'2012-1-1',即沒有任何前導零... – Sohil 2013-03-03 13:58:50