select 每月数据 sql
select data by month sql
我有一个 table 包括:
Product_ID (number),
Product_Name (varchar),
Expired_Date (datetime)
我需要 select 将在未来六个月到期的产品。我已经创建了一个语句,它没有给我错误消息,但我猜它不起作用,因为它 returns 没有结果。
声明:
SELECT prod.Product_ID, prod.Product_Name, prod.Expired_Date
WHERE (month(prod.expired_date)) - month(date()) = 6
我哪里错了?
附加问题:
我希望将从本月起第 6 个月过期的记录也 selected。例如,从现在开始的六个月是2016年1月。其中一条记录是2016年1月16日expired_date,今天是2015年7月6日。还有几天就变成整整六个月了,所以这条记录未 selected。 select 一月将过期的所有记录,我该怎么办?
注意:我正在使用 MS Access。
相反,您想做这样的事情:
where prod_expired_date < date_add(curdate(), interval 6 month)
month()
returns 月份数,1 到 12。这不是你想要的。
我应该补充一下,如果你只想要将来会过期的东西:
where prod_expired_date >= curdate() and
prod_expired_date < date_add(curdate(), interval 6 month)
编辑:
在 MS Access 中,以下应该有效:
where prod_expired_date < DATEADD("m", 6, now())
编辑二:
这有点棘手。可以到上个月的最后一天加上7个月:
where prod_expired_date < DATEADD("m", 7, DATEADD("d", -DAY(now()), now())
SELECT prod.Product_ID, prod.Product_Name, prod.Expired_Date FROM table WHERE prod.Expired_Date BETWEEN '2015-07-05 00:00:00' AND '2016-01-05 23:59:59'
如果您使用 hh:m:ss 格式日期,这应该有效。
或
SELECT prod.Product_ID, prod.Product_Name, prod.Expired_Date FROM table WHERE prod.Expired_Date BETWEEN CURDATE() AND CURDATE() + INTERVAL 6 MONTH
我有一个 table 包括:
Product_ID (number),
Product_Name (varchar),
Expired_Date (datetime)
我需要 select 将在未来六个月到期的产品。我已经创建了一个语句,它没有给我错误消息,但我猜它不起作用,因为它 returns 没有结果。
声明:
SELECT prod.Product_ID, prod.Product_Name, prod.Expired_Date
WHERE (month(prod.expired_date)) - month(date()) = 6
我哪里错了?
附加问题:
我希望将从本月起第 6 个月过期的记录也 selected。例如,从现在开始的六个月是2016年1月。其中一条记录是2016年1月16日expired_date,今天是2015年7月6日。还有几天就变成整整六个月了,所以这条记录未 selected。 select 一月将过期的所有记录,我该怎么办?
注意:我正在使用 MS Access。
相反,您想做这样的事情:
where prod_expired_date < date_add(curdate(), interval 6 month)
month()
returns 月份数,1 到 12。这不是你想要的。
我应该补充一下,如果你只想要将来会过期的东西:
where prod_expired_date >= curdate() and
prod_expired_date < date_add(curdate(), interval 6 month)
编辑:
在 MS Access 中,以下应该有效:
where prod_expired_date < DATEADD("m", 6, now())
编辑二:
这有点棘手。可以到上个月的最后一天加上7个月:
where prod_expired_date < DATEADD("m", 7, DATEADD("d", -DAY(now()), now())
SELECT prod.Product_ID, prod.Product_Name, prod.Expired_Date FROM table WHERE prod.Expired_Date BETWEEN '2015-07-05 00:00:00' AND '2016-01-05 23:59:59'
如果您使用 hh:m:ss 格式日期,这应该有效。
或
SELECT prod.Product_ID, prod.Product_Name, prod.Expired_Date FROM table WHERE prod.Expired_Date BETWEEN CURDATE() AND CURDATE() + INTERVAL 6 MONTH