Выберите только записи от одного года - PullRequest
0 голосов
/ 23 декабря 2011

Я просто не могу придумать, как этого добиться. Я в основном хочу получить записи того же года в базе данных. Поле является полем DATETIME, поэтому его легко рассчитать.

Моя проблема в том, что я не хочу указывать год: он должен автоматически использовать ближайший к настоящему году год. Все даты в будущем, но иногда в этом году больше не осталось записей, поэтому следует автоматически выбрать следующую доступную.

Я почти наверняка знаю, что есть решение с условными операторами, но я недостаточно хорошо понимаю синтаксис, чтобы это произошло. Я бы хотел, чтобы что-то уже было сделано, но все, что я знаю, это то, что я должен использовать INTERVAL, который прекрасно работает, когда у меня есть год, но этого недостаточно для этого случая.

SELECT date
FROM table WHERE 
date > (NOW() + INTERVAL 1 YEAR)

Может ли кто-нибудь помочь мне здесь?

1 Ответ

1 голос
/ 23 декабря 2011
Select ...
From TableName 
where `date` BETWEEN concat(year(now()) + 1, '-01-01')
                 AND concat(year(now()) + 1, '-12-31')

Для now() == 2011-12-23 будут возвращены все строки с датой от 2012-01-01 до 2012-12-31.

UPD : как указал @Nirmal в комментариях ниже - когда вы используете BETWEEN, вы всегда должны помнить, что он включает в себя как левые, так и правые значения. Таким образом, приведенный выше запрос будет включать только Dec 31st, 00:00:00, буквально одну секунду целого дня. И это может привести к неожиданным результатам, если вы не заботитесь о таком крайнем случае.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...