【发布时间】:2015-12-03 13:46:53
【问题描述】:
我需要检查当前月份、下个月和上个月的查询结果。当前月份的查询是:
SELECT
Types.Type,
(SELECT COUNT(*) FROM Pitch
LEFT JOIN booking ON Pitch.Location_Id = booking.Location_Id
WHERE
Pitch.Type_ID = Types.Type_ID
AND (MONTH(Booking.EndDate) = month(GETDATE())
OR MONTH(Booking.StartDate) = month(GETDATE()))
) AS total
FROM
Types
我尝试了下个月的月份GETDATE()+1 和上个月的month(GETDATE()-1),这也有效,但前提是日期不进入明年(如果我在 2015 年 12 月运行查询,它不会找到2016 年 1 月的记录)。
【问题讨论】:
-
请注意,
MONTH(GETDATE()+1)将返回明天的月份,而不是下个月。您正在寻找MONTH(GETDATE())+1。另外,您的查询不排除超过 1 个月的Bookings 吗?要解决这个问题,您可以简单地比较MONTH(Booking.EndDate) >= month(GETDATE()) AND MONTH(Booking.StartDate) <= month(GETDATE())... 我认为。 -
您使用的是哪个 dbms?太多的 dbms 产品在日期/时间方面远不符合 ANSI SQL...)