ACCESS DB 2013 中 SELECT 查询中的奇怪问题
Weird issue in SELECT query in ACCESS DB 2013
我正在尝试根据两者之间的 TransactionDAte 从 table 中获取数据。 table 中已有条目。但我仍然没有得到预期的结果。
每日库存情况Table
ID PartNumber Quantity PalletNo InvoiceNo TransactionDate IsAdd IsRestore
23 F005.V01.639-24V 250 1111 3/16/2016 Yes No
24 F005.V01.639-24V 120 2222 3/16/2016 Yes No
25 F005.V01.639-24V 170 1111 3333 3/16/2016 No Yes
SELECT TransactionDate,PartNumber,IsAdd, SUM(Quantity) AS Qty FROM InventoryDailyFacts
WHERE TransactionDate Between Format(#16/03/2016#,'dd/mm/yyyy') And Format(#16/03/2016#,'dd/mm/yyyy')
GROUP BY TransactionDate, PartNumber,IsAdd
ORDER BY TransactionDate desc
零行受影响
这确实是典型的 Access 怪癖。
虽然它是有效的 SQL 并且可以在其他 RDBMS 上工作,但如果您定义相同的日期
在 Access BETWEEN/AND 中不起作用
如果您真的想要相同日期的范围,请添加时间:
SELECT TransactionDate,PartNumber,IsAdd, SUM(Quantity) AS Qty FROM InventoryDailyFacts
WHERE TransactionDate Between format(#16/03/2016 00:00:00#, 'dd/mm/yyyy hh:nn:ss') AND format(#16/03/2016 23:59:59#, 'dd/mm/yyyy hh:nn:ss')
GROUP BY TransactionDate, PartNumber,IsAdd
ORDER BY TransactionDate desc
您必须正确设置日期表达式的格式,或者在您有值时直接使用它:
SELECT TransactionDate,PartNumber,IsAdd, SUM(Quantity) AS Qty
FROM InventoryDailyFacts
WHERE TransactionDate Between #03/16/2016# And #03/16/2016#
GROUP BY TransactionDate, PartNumber,IsAdd
ORDER BY TransactionDate desc
或者简单地说:
SELECT TransactionDate, PartNumber, IsAdd, SUM(Quantity) AS Qty
FROM InventoryDailyFacts
WHERE TransactionDate = Date()
GROUP BY TransactionDate, PartNumber, IsAdd
ORDER BY TransactionDate desc
或者,如果 TransactionDate 可能有时间部分:
SELECT TransactionDate, PartNumber, IsAdd, SUM(Quantity) AS Qty
FROM InventoryDailyFacts
WHERE Fix(TransactionDate) = Date()
GROUP BY TransactionDate, PartNumber, IsAdd
ORDER BY TransactionDate desc
或者,如果 TransactionDate 是文本,而不是数据类型 Date:
SELECT TransactionDate, PartNumber, IsAdd, SUM(Quantity) AS Qty
FROM InventoryDailyFacts
WHERE DateValue(TransactionDate) = Date()
GROUP BY TransactionDate, PartNumber, IsAdd
ORDER BY TransactionDate desc
我正在尝试根据两者之间的 TransactionDAte 从 table 中获取数据。 table 中已有条目。但我仍然没有得到预期的结果。
每日库存情况Table
ID PartNumber Quantity PalletNo InvoiceNo TransactionDate IsAdd IsRestore
23 F005.V01.639-24V 250 1111 3/16/2016 Yes No
24 F005.V01.639-24V 120 2222 3/16/2016 Yes No
25 F005.V01.639-24V 170 1111 3333 3/16/2016 No Yes
SELECT TransactionDate,PartNumber,IsAdd, SUM(Quantity) AS Qty FROM InventoryDailyFacts
WHERE TransactionDate Between Format(#16/03/2016#,'dd/mm/yyyy') And Format(#16/03/2016#,'dd/mm/yyyy')
GROUP BY TransactionDate, PartNumber,IsAdd
ORDER BY TransactionDate desc
零行受影响
这确实是典型的 Access 怪癖。 虽然它是有效的 SQL 并且可以在其他 RDBMS 上工作,但如果您定义相同的日期
在 Access BETWEEN/AND 中不起作用如果您真的想要相同日期的范围,请添加时间:
SELECT TransactionDate,PartNumber,IsAdd, SUM(Quantity) AS Qty FROM InventoryDailyFacts
WHERE TransactionDate Between format(#16/03/2016 00:00:00#, 'dd/mm/yyyy hh:nn:ss') AND format(#16/03/2016 23:59:59#, 'dd/mm/yyyy hh:nn:ss')
GROUP BY TransactionDate, PartNumber,IsAdd
ORDER BY TransactionDate desc
您必须正确设置日期表达式的格式,或者在您有值时直接使用它:
SELECT TransactionDate,PartNumber,IsAdd, SUM(Quantity) AS Qty
FROM InventoryDailyFacts
WHERE TransactionDate Between #03/16/2016# And #03/16/2016#
GROUP BY TransactionDate, PartNumber,IsAdd
ORDER BY TransactionDate desc
或者简单地说:
SELECT TransactionDate, PartNumber, IsAdd, SUM(Quantity) AS Qty
FROM InventoryDailyFacts
WHERE TransactionDate = Date()
GROUP BY TransactionDate, PartNumber, IsAdd
ORDER BY TransactionDate desc
或者,如果 TransactionDate 可能有时间部分:
SELECT TransactionDate, PartNumber, IsAdd, SUM(Quantity) AS Qty
FROM InventoryDailyFacts
WHERE Fix(TransactionDate) = Date()
GROUP BY TransactionDate, PartNumber, IsAdd
ORDER BY TransactionDate desc
或者,如果 TransactionDate 是文本,而不是数据类型 Date:
SELECT TransactionDate, PartNumber, IsAdd, SUM(Quantity) AS Qty
FROM InventoryDailyFacts
WHERE DateValue(TransactionDate) = Date()
GROUP BY TransactionDate, PartNumber, IsAdd
ORDER BY TransactionDate desc