-1

我使用 sql server 2008 并使用了以下命令:

SELECT Min(id), 
       [idfromindex] 
FROM   ordersview 
WHERE  [idfromindex] IN(SELECT DISTINCT [idfromindex] 
                        FROM   ordersview 
                        WHERE  isobserve = 'True' 
                               AND ispay = 'True' 
                               AND orderdate >= '1390/09/01' 
                               AND orderdate <= '1391/09/27') 
GROUP  BY [idfromindex] 

但是,如果有一个确切orderdate='1390/09/01'orderdate='1391/09/27'值的记录,它不会显示它们,它只会显示大于和小于它们的结果,但如果它存在,我也想显示相等的结果。

orderDate 类型为 Date

4

2 回答 2

2

不会将条件更改为存在>= '1390/09/01'并且< '1391/09/28'更有意义吗?这样,如果日期注册为1390/09/01 23:59'. Date conditions tend to assume the exact time is00:00`,您将删除时间组件。当然,这取决于您的列数据类型是什么(日期时间与日期)。

于 2013-02-10T20:50:24.617 回答
1

DATETIME 数据类型包含日期和时间信息

如果只提供日期部分,SQL 将时间部分设置为一天的开始,即午夜...

因此,在右侧添加 +1 或在左侧添加 -1将解决您的问题..

SELECT DISTINCT [idfromindex] 
                        FROM   ordersview 
                        WHERE  isobserve = 'True' 
                               AND ispay = 'True' 
                               AND orderdate >= dateadd(day,1,'1390/09/01')
                               AND orderdate <= dateadd(day,1,'1391/09/27')
于 2013-02-10T20:56:49.153 回答