2016-10-03 15 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' 

データベースに格納されている日付がdatetime形式の場合は、日付としてキャストします。あなたはいつもMySQLYEAR機能を使用することができます年を比較するには、以下のコード

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

をご覧ください。

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

これは問題を解決するための貴重なヒントになるかもしれませんが、答えは本当に解決策を示す必要があります。あなたが意味することを示すサンプルコードを提供するために[編集]してください。代わりに、これをコメントとして書くことを検討してください。 –

関連する問題