哪些操作员对我的命令是正确的

时间:2013-02-10 20:40:35

标签: sql sql-server sql-server-2008

我使用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类型是日期

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分: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')