0

我执行选择语句

select 
    Orders.Oid as 'Order ID',
    Eid as 'Employee ID',
    Barcode,
    PacksQty as 'Packs Quantity',
    UnitQty as 'Units Quantity',
    Date as 'Order Date',
    Price as 'Total Price' 
from  OrderDetails 
  inner join Orders 
      on OrderDetails.Oid = Orders.Oid 
where OrderDetails.Date ='05/07/2013'

它不会检索数据,也不会给我任何错误。顺便说一下,表格行中有数据在日期列中具有指定的日期。

4

3 回答 3

0

试试这个..使用如下所示的日期格式 Where OrderDetails.Date ='2031 Jul 05'

OrderDetails.Date.. 的类型是什么?是日期时间还是日期..?如果它的日期时间改变了这个条件

WHERE CONVERT(CHAR(12),OrderDetails.Date,13)='2013 年 7 月 5 日'

于 2013-07-05T17:25:19.313 回答
0

因为查询没有抛出它意味着查询正在成功执行,这留下了以下可能性:

  1. 您在 OrderDetails 或 Orders 表中没有数据
  2. 您没有 OrderDetails,其中 OrderDetails.Date = '05/07/2013'
执行此操作以查看您是否有包含该日期的列

SELECT COUNT(*) AS DateCount FROM OrderDetails WHERE Date = '05/07/2013'

如果返回 0,则表示该日期没有 OrderDetails,如果返回 1 或更多,请执行以下操作

SELECT COUNT(*) AS OrdersWithDateCount
FROM Orders 
    JOIN OrderDetails 
        ON Orders.Oid = OrderDetails.Oid
WHERE OrderDetails.Date = '05/07/2013'

如果您在上面的示例中返回零,但在下面的示例中不返回零

SELECT COUNT(*) AS OrderDetailsWithDateCount
FROM OrderDetails
WHERE Date = '05/07/2013'

您有详细记录但没有订单记录或孤立记录。确保您有正确的日期,请执行以下操作

SELECT DISTINCT Date 
FROM OrderDetails 
WHERE Date BETWEEN GETDATE()-90 AND GETDATE()

如果您看到日期匹配,可能是因为您的数据类型是日期时间,请尝试使用

DECLARE @TargetDate DATE = '05/07/2013'   

SELECT COUNT(*) FROM OrderDetails 
WHERE OrderDetails.Date 
    BETWEEN DATEADD(day,-1,@TargetDate) 
        AND DATEADD(day,1,@TargetDate)

如果这确实返回了 0 以外的值,那么您需要使用这种方法来获得正确的结果。如果它确实返回 0,那么您肯定没有日期为'05/07/2013'

于 2013-07-05T16:41:16.110 回答
0

尝试这个

select Orders.Oid as 'Order ID',Eid as 'Employee ID',Barcode,PacksQty as 'Packs Quantity',
UnitQty as 'Units Quantity',Date as 'Order Date',Price as 'Total Price' from   
OrderDetails join Orders 
on OrderDetails.Oid = Orders.Oid 
Where OrderDetails.Date ='2031-07-05'
于 2013-07-05T16:43:16.267 回答