Sql 查询以返回工作不正常的业务年度之间的记录
我发现自己在工作年限之间查询记录时遇到了问题。 在这种情况下,业务年度总是从Sql 查询以返回工作不正常的业务年度之间的记录,sql,ms-access,Sql,Ms Access,我发现自己在工作年限之间查询记录时遇到了问题。 在这种情况下,业务年度总是从01/08/YYYY开始,并在31/07/YYYY结束。 例如: 对于2019-2020业务启动:2019年8月1日结束2020年7月31日 对于2020-2021业务启动:01/08/2020结束31/07/2021 当我今天打开数据库时,即使是新的业务年度,记录仍然会出现。 从新的业务年度开始,我的问题似乎就不起作用了。我有: 'To return records for the Current Business y
01/08/YYYY
开始,并在31/07/YYYY
结束。
例如:
对于2019-2020
业务启动:2019年8月1日
结束2020年7月31日
对于2020-2021
业务启动:01/08/2020
结束31/07/2021
当我今天打开数据库时,即使是新的业务年度,记录仍然会出现。
从新的业务年度开始,我的问题似乎就不起作用了。我有:
'To return records for the Current Business year:
SELECT * FROM tblData WHERE (((DateDiff('m',[PaymentDate],DateSerial(Year(Date()),1,1))) Between -6 And 5));
'To return records for Previous Business year:
SELECT * FROM tblData WHERE (((DateDiff('m',[PaymentDate],DateSerial(Year(Date())-1,1,1))) Between -6 And 5));
我的问题是,如何正确查询当前业务年度和上一个业务年度的记录?上一个业务年度的记录:
select t.*
from tblData t
where year(dateadd('m', -8, PaymentDate)) = year(date()) - 1
逻辑是从日期中减去8个月,然后提取年份。对于上一个业务年度:
select t.*
from tblData t
where year(dateadd('m', -8, PaymentDate)) = year(date()) - 1
逻辑是从日期中减去8个月,然后提取年份。如果业务年度的开始和结束是常量(
yyyy/08/01
-yyyy+1/07/31
),则尝试此操作-对于当前年度:
SELECT t.*
FROM tblData As t
WHERE t.PaymentDate BETWEEN DateSerial(Year(Date()), 8, 1) AND DateSerial(Year(Date())+1, 7, 31);
上一年度:
SELECT t.*
FROM tblData As t
WHERE t.PaymentDate BETWEEN DateSerial(Year(Date())-1, 8, 1) AND DateSerial(Year(Date()), 7, 31);
如果要将年份值传递给查询,请尝试以下操作:
--pass year to the query to grab data for business year yyyy/08/01 - yyyy+1/07-31
PARAMETERS BusinessYear SHORT;
SELECT t.*
FROM tblData As t
WHERE t.PaymentDate BETWEEN DateSerial(Year(BusinessYear), 8, 1) AND DateSerial(Year(BusinessYear)+1, 7, 31);
有关更多详细信息,请参阅:如果业务年度的开始和结束是固定的(
yyyy/08/01
-yyyy+1/07/31
),请尝试此方法-对于当前年度:
SELECT t.*
FROM tblData As t
WHERE t.PaymentDate BETWEEN DateSerial(Year(Date()), 8, 1) AND DateSerial(Year(Date())+1, 7, 31);
上一年度:
SELECT t.*
FROM tblData As t
WHERE t.PaymentDate BETWEEN DateSerial(Year(Date())-1, 8, 1) AND DateSerial(Year(Date()), 7, 31);
如果要将年份值传递给查询,请尝试以下操作:
--pass year to the query to grab data for business year yyyy/08/01 - yyyy+1/07-31
PARAMETERS BusinessYear SHORT;
SELECT t.*
FROM tblData As t
WHERE t.PaymentDate BETWEEN DateSerial(Year(BusinessYear), 8, 1) AND DateSerial(Year(BusinessYear)+1, 7, 31);
有关更多详细信息,请参见:我这里肯定遗漏了一些内容,但是:
年(datediff('m',-8,PaymentDate))
为所有日期提供1903您可能指的是日期添加
,而不是日期差异
@ErikA。谢谢。@Gordon Linoff01/08/2020
必须在当前业务年度出现。因此Year(DateAdd('m',-7,PaymentDate))=Year(Date())-1
?@Fil。我认为这就是逻辑。有点不清楚哪一年是“当前”业务年度,因此可能会出现一个一个的混乱。我这里肯定遗漏了一些东西,但是:year(datediff('m',-8,PaymentDate))
为所有日期提供1903您可能指的是DateAdd
而不是datediff
@ErikA。谢谢。@Gordon Linoff01/08/2020
必须在当前业务年度出现。因此Year(DateAdd('m',-7,PaymentDate))=Year(Date())-1
?@Fil。我认为这就是逻辑。有点不清楚哪一年是“当前”业务年度,因此可能会出现一个接一个的混乱。