繁体   English   中英

在MySQL中获取数据直到上个月的最后一天

[英]Get data up until last day of previous month in MySQL

我有一个带有费用的mysql-db,带有日期时间。 每个月我都想创建一张包含上个月或之前所有费用的发票。 因此,如果它可能是2012年2月5日或30日,我仍然只想要2012年4月或更早的发票。 我尝试过使用date_sub,但它只减去了一个月,所以它只发票到上个月的同一天。 我该怎么办?

从广告WHERE AdEnd获取*?

泰!

我总是发现,如果你从当前日期减去当月的日期,你将获得上个月的最后一天。 例如,在该月的15日,减去15天,您将结束上个月的最后一天:

SELECT (DATE_SUB(CURDATE(),INTERVAL DAYOFMONTH(CURDATE()) DAY))

如果CURDATE()2012-05-05那么上面的返回2012-04-30

因此,要让广告达到上个月的最后一天,请执行以下操作:

SELECT *
FROM Ads
WHERE AdEnd <= (DATE_SUB(CURDATE(),INTERVAL DAYOFMONTH(CURDATE()) DAY))

如果AdEnd是DATE,这是有效的,但是如果它是DATETIME,那么你只需less than the first of the month做得less than the first of the month ,所以你减去一天的时间来减少这个月的第一天:

SELECT *
FROM Ads
WHERE AdEnd < (DATE_SUB(CURDATE(),INTERVAL DAYOFMONTH(CURDATE()) - 1 DAY))

试试date_diff ,例如:

SELECT DATEDIFF('2008-11-30','2008-11-29') AS DiffDate

收益率:

1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM