2016-10-03 95 views
0

我必須滿足購買日期在2012年之前的條件,我無法弄清楚如何格式化我的SQL代碼才能獲得此權利。如何在SQL中格式化日期?

我當前的代碼:

SELECT g.GameName, p.GameID, g.GameID 
FROM games g, purchases p 
WHERE p.GameID = g.GameID 
AND p.DatePurchase < 2012-01-01 

和數據庫在同一格式爲(如「2012-06-15」),但是當我運行此代碼運行,但我得到0的結果。

+0

使用' '''周圍的日期。或者它將被視爲數字,'2012-01-01'將在2010年結果,因此你不會得到結果。 –

+0

是否嘗試將日期放在單引號中? – mfredy

回答

1
SELECT g.GameName, p.GameID, g.GameID 
FROM games g, purchases p 
WHERE p.GameID = g.GameID 
AND p.DatePurchase < '2012-01-01' 

如果存儲在數據庫中的日期是日期時間格式,那麼只需將它轉換爲日期即可。請看下面的代碼

SELECT g.GameName, p.GameID, g.GameID 
    FROM games g, purchases p 
    WHERE p.GameID = g.GameID 
    AND CAST(p.DatePurchase AS DATE) < '2012-01-01' 
0

比較一年你可以隨時使用MySQLYEAR功能。

SELECT g.GameName, p.GameID, g.GameID 
FROM games g, purchases p 
WHERE p.GameID = g.GameID 
AND YEAR(p.DatePurchase) < '2012' 
0

的問題是日期值不是引用,因此它解釋爲一個算術表達式2012 - 1 - 1,即2010

這很容易固定:

... AND p.DatePurchase < '2012-01-01' 
+0

雖然這可能是解決問題的有價值的提示,但答案確實需要證明解決方案。請[編輯]提供示例代碼來展示你的意思。或者,可以考慮將其寫爲註釋。 –