繁体   English   中英

MySQL:选择上个月的第一天和最后一天

[英]MySQL: Select with first and last day of previous month

使用 PhpMyadmin,我有这句话工作:

SELECT id_order as Ref FROM t_orders WHERE DATE(invoice_date) = CURDATE()

现在我想提前为上个月的第一天重新放置“当前日期”(CURDATE)。


Ankit Bajpai 的回答解决了我的问题(谢谢):

SELECT id_order as Ref FROM t_orders WHERE DATE(invoice_date) >= concat(date_format(LAST_DAY(now() - interval 1 month),'%Y-%m-'),'01'); 

在 MYSQL 中,您可以尝试以下操作

上个月的第一天

select last_day(curdate() - interval 2 month) + interval 1 day

上个月的最后一天

select last_day(curdate() - interval 1 month)

当月的第一天

select last_day(curdate() - interval 1 month) + interval 1 day

当月的最后一天

select last_day(curdate())

对于 MS SQL 服务器:

DECLARE @firstDayOfLastMonth DATETIME = DATEADD(MONTH, -1, DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()), 0))
DECLARE @lastDayOfLastMonth DATETIME = DATEADD(DAY, -1, DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()), 0))

SELECT @firstDayOfLastMonth;
SELECT @lastDayOfLastMonth;

尝试以下查询:-

SELECT id_order as Ref
FROM t_orders 
WHERE DATE(invoice_date) >= concat(date_format(LAST_DAY(now() - interval 1 month),'%Y-%m-'),'01'); 

仔细阅读后……您想要上个月的整个月。 你可以这样做:

SELECT id_order as Ref FROM t_orders 
WHERE 
DATE(invoice_date) >= DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE())-1, 0)
AND
DATE(invoice_date) <= DATEADD(month, DATEDIFF(MONTH, 0, GETDATE()), -1)

SELECT id_order as Ref FROM t_orders 
WHERE 
MONTH(DATE(invoice_date)) = MONTH(DATEADD(MONTH,-1,GETDATE()))

暂无
暂无

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

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