Sql 对于我的命令,哪些运算符是正确的

Sql 对于我的命令,哪些运算符是正确的,sql,sql-server,sql-server-2008,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'

我使用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

将条件更改为>='1390/09/01'和<'1391/09/28'是否更有意义?这样,如果日期注册为1390/09/01 23:59',则可以删除时间组件。日期条件倾向于假定准确时间为00:00`。当然,这取决于列数据类型是datetime还是date。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')

“orderdate”也有时间成分吗?实际上,>'1390/08/31'应该>='1390/09/01'。时间戳为1390/08/31 xx:xx的记录应该被排除在外。你说得对,我把自己弄糊涂了。为了避免混淆,我改变了答案。