2013-06-21 88 views
-1

我有兩個日期列,dateAdateB。如果我從dateBdateB - dateA)中減去dateA,我會得到錯誤的結果,但不會使用DATEDIFF(dateB,dateA)函數。在包含數據的表格中使用但不包含下面的查詢時,我從直接減法中得到錯誤的結果。mysql日期直接減法

SELECT DATE('2013-01-31') - DATE('2013-01-27')

爲什麼?

編輯:

我發現,在MySQL如果兩個日期是在一個月之內,然後直接減法給出正確的結果,但如果日期跨度一個月,一年有可能是一個問題。

我對不對?

回答

0

您的專欄定義爲日期或Varchars?因爲日期作爲字符串意味着什麼。當你做一個DATE('2013-01-31'),它創建一個日期對象,因此減法工作。所以,如果你的列被定義爲Varchar,那麼做DATE(dateB) - DATE(dateA)

+0

確認這兩個字段是日期字段。 –

0

推測,你的列不是作爲日期存儲的,而是作爲字符串存儲的。如果它們被存儲爲日期,則減法將按預期工作。

當你減去兩個字符串,如:

SELECT '2013-01-31' - '2013-01-27' 

那麼MySQL將它們轉換成數字,基於領先的數字。在這種情況下,兩者都以數字2013開頭,所以兩者都轉換爲2013(如果開頭沒有數字,則值將爲0)。然後減去這些數字。

+1

確認這兩個字段是日期字段 –