Sql 对于我的命令,哪些运算符是正确的
我使用sql server 2008并使用了以下命令: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'
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的记录应该被排除在外。你说得对,我把自己弄糊涂了。为了避免混淆,我改变了答案。