MySQL:从给定的`Date`对象中查找一年的第一个和最后一个日期

时间:2014-10-09 06:55:43

标签: mysql sql date select

我有一张表格“Ongoing_Portfolio”下面是它的结构。

CREATE TABLE `ongoing_portfolio` (
 `idOngoing_Portfolio` int(11) NOT NULL AUTO_INCREMENT,
 `Updated_Date` date NOT NULL,
 `Investment_Value` double NOT NULL,
 `Cash_Value` double NOT NULL,
 `idPortfolio` int(11) NOT NULL,
 PRIMARY KEY (`idOngoing_Portfolio`),
 KEY `fk_Ongoing_Portfolio_Portfolio1_idx` (`idPortfolio`),
 CONSTRAINT `fk_Ongoing_Portfolio_Portfolio1` FOREIGN KEY (`idPortfolio`) REFERENCES `portfolio` (`idPortfolio`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8

我需要获得Updated_Date年的第一天和最后一天。以下是我的尝试。

//Get the first date
SELECT EXTRACT (YEAR FROM `Updated_Date`) 
FROM Ongoing_Portfolio WHERE `idPortfolio` = 1

//Get the last date
SELECT EXTRACT (YEAR FROM `Updated_Date`) 
FROM Ongoing_Portfolio WHERE `idPortfolio` = 1

我知道我的尝试没有完成,但这也是不正确的。我收到错误!

我的期望是,如果Updated_Date2014-05-06,则第一个查询应返回2014-01-01,第二个查询应返回2014-12-31

我怎么能在MySQL中做到这一点?

1 个答案:

答案 0 :(得分:1)

您只能使用一个查询来获取第一天和最后一天

SELECT MAKEDATE(YEAR(`Updated_Date`),1)  as first_date ,MAKEDATE(YEAR(`Updated_Date`),365)  as last_date FROM Ongoing_Portfolio WHERE `idPortfolio` = 1

您可以从db结果

轻松访问first_date和last_date