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

Если дата, хранящаяся в базе данных, находится в формате даты и времени, то просто отправьте ее как Date. Пожалуйста, посмотрите на код ниже

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

Хотя это может быть ценным советом для решения проблемы, ответ действительно должен продемонстрировать решение. Пожалуйста, [править], чтобы предоставить пример кода, чтобы показать, что вы имеете в виду. В качестве альтернативы подумайте о том, чтобы вместо этого писать это как комментарий. –

Смежные вопросы