首页 > 解决方案 > SQL 查询不返回正确的结果

问题描述

我正在尝试从 PHP 进程中过滤 SQL 服务器上的两个日期。

这是查询:

select *
from webStocks
where FECHAMODIFICADO between '2020-06-03 17:16:02' and  '2020-06-04 17:16:03'
ORDER BY webStocks.FECHAMODIFICADO DESC

这是结果:

在此处输入图像描述

结果不是我想要的。在表中,我有以下信息,它应该是结果。

在此处输入图像描述

我在查询中做错了什么?:(

标签: sqlsql-server

解决方案


SQL 表表示无序集。这意味着,当您运行不带 no 的查询时ORDER BY,结果可以按任何顺序排列——甚至在不同运行时按不同顺序排列。

在这种情况下,您有一个ORDER BY. 但是该列有重复项。同样的原则也适用:具有相同键值的行可以按任何顺序排列——甚至在不同的运行中可以按不同的顺序排列。

因此,您需要添加一个新密钥来捕获您想要的订单。从您的数据中看不出来。但是如果你使用,结果至少会是稳定的:

ORDER BY webStocks.FECHAMODIFICADO DESC, CodeArticulo

您的WHERE条款包含非常具体的时间也很奇怪。但是这些行中的数据都是在午夜发生的。如果时间戳代表人类行为,通常午夜不是这样一个活跃的时间。


推荐阅读