我必須滿足購買日期在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的結果。
我必須滿足購買日期在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的結果。
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'
比較一年你可以隨時使用MySQL
YEAR
功能。
SELECT g.GameName, p.GameID, g.GameID
FROM games g, purchases p
WHERE p.GameID = g.GameID
AND YEAR(p.DatePurchase) < '2012'
的問題是日期值不是引用,因此它解釋爲一個算術表達式2012 - 1 - 1
,即2010
。
這很容易固定:
... AND p.DatePurchase < '2012-01-01'
雖然這可能是解決問題的有價值的提示,但答案確實需要證明解決方案。請[編輯]提供示例代碼來展示你的意思。或者,可以考慮將其寫爲註釋。 –
使用' '''周圍的日期。或者它將被視爲數字,'2012-01-01'將在2010年結果,因此你不會得到結果。 –
是否嘗試將日期放在單引號中? – mfredy