MySQL选择年和月的第一天

时间:2013-08-23 21:17:52

标签: mysql sql date select

如何在SELECT中找到一年中的第一天?

SELECT `DATE`,`SomeValue1`,`SomeValue2`
FROM `SomeTableName`
WHERE (`DATE` >= [...first day of the year in date format...])

我发现这个月 - 但我没有足够的掌握一年: (我正在寻找一个单独的查询来查找月初和现在之间的数据)

WHERE (`DATE` between  DATE_FORMAT(NOW() ,'%Y-%m-01') AND NOW() ) 

4 个答案:

答案 0 :(得分:19)

我认为你需要:

WHERE (`DATE` between  DATE_FORMAT(NOW() ,'%Y-01-01') AND NOW() ) 

说实话,你可以这样做:

WHERE (`DATE` between  DATE_FORMAT(NOW() ,'%Y') AND NOW() ) 

答案 1 :(得分:12)

为了获得当年的第一天,我使用:

SELECT MAKEDATE(year(now()),1);

所以在你的查询中你会写:

where `date` >= MAKEDATE(year(now()),1)

在过去整整两年里,我经常做类似销售报告的事情,但我总是希望从一年开始。因此显示了2年的全年和今年的年份。

where date>= MAKEDATE(year(now()-interval 2 year),1)

但为了进一步复杂化,我们的财政年度从5月1日开始。我总是想在5月1日开始。

where date >= MAKEDATE(year(now()-interval 2 year),1) + interval 120 day

或作为替代

where date >= MAKEDATE(year(now()-interval 2 year),121)

五月一日是一年中的第121天。但这种方法在闰年不起作用。

闰年证明版本是:

where date => select MAKEDATE(year(now()-interval 5 year),1) + interval 4 month

无论是否为闰年,都将返回xxxx-05-01日期。

答案 2 :(得分:4)

如果上述情况适用于本月,那么这将适用于当年:

WHERE (`DATE` between  DATE_FORMAT(NOW() ,'%Y-01-01') AND NOW() ) 

答案 3 :(得分:0)

不知道为什么,但就我而言,浏览300万。记录最快的方法是:

where `DATE` >= CONCAT(YEAR(NOW()),'-01-01')