MySQL选择年和月的第一天

Mar*_*ner 6 mysql sql select date

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

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

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

WHERE (`DATE` between  DATE_FORMAT(NOW() ,'%Y-%m-01') AND NOW() ) 
Run Code Online (Sandbox Code Playgroud)

Gri*_*... 19

我想你需要:

WHERE (`DATE` between  DATE_FORMAT(NOW() ,'%Y-01-01') AND NOW() ) 
Run Code Online (Sandbox Code Playgroud)

说实话,你可以这样做:

WHERE (`DATE` between  DATE_FORMAT(NOW() ,'%Y') AND NOW() ) 
Run Code Online (Sandbox Code Playgroud)


Tim*_*ray 15

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

SELECT MAKEDATE(year(now()),1);
Run Code Online (Sandbox Code Playgroud)

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

where `date` >= MAKEDATE(year(now()),1)
Run Code Online (Sandbox Code Playgroud)

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

where date>= MAKEDATE(year(now()-interval 2 year),1)
Run Code Online (Sandbox Code Playgroud)

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

where date >= MAKEDATE(year(now()-interval 2 year),1) + interval 120 day
Run Code Online (Sandbox Code Playgroud)

或作为替代

where date >= MAKEDATE(year(now()-interval 2 year),121)
Run Code Online (Sandbox Code Playgroud)

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

闰年证明版本是:

where date => select MAKEDATE(year(now()-interval 5 year),1) + interval 4 month
Run Code Online (Sandbox Code Playgroud)

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

  • SELECT MAKEDATE(year(now()),1); 看起来比接受的答案更干净。 (2认同)

Gor*_*off 5

如果上述适用于本月,则适用于本年:

WHERE (`DATE` between  DATE_FORMAT(NOW() ,'%Y-01-01') AND NOW() ) 
Run Code Online (Sandbox Code Playgroud)