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