仅选择一年的条目

时间:2011-12-22 20:02:47

标签: mysql date

我无法想办法实现这一目标。 我基本上想要在数据库中获取同年的条目。该字段是DATETIME字段,因此很容易用它来计算。

我的问题是我不想指定一年:它应该自动使用最接近现在的那一年。所有日期都在将来,但有时今年不再有任何条目,所以它应该自动选择下一个可用日期。

我几乎肯定知道有条件语句的解决方案,但我不太了解语法,以实现它。我希望已经完成了一些事情,但我所知道的是我必须使用INTERVAL,这在我有一年时效果很好,但这对于这种情况来说还不够。

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

有人可以帮助我吗?

1 个答案:

答案 0 :(得分:1)

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-012012-12-31之间的所有行。

UPD :正如@Nirmal在下面的评论中指出的那样 - 当您使用BETWEEN时,您应该始终牢记它包含左右值。因此,上面的查询仅包含Dec 31st, 00:00:00,实际上只有一天的一秒钟。如果你不关心这种边缘情况,这会导致一些意想不到的结果。