如何在sql中查询指定日期范围内的数据?

说实话,我在使用SQL查询某个日期范围内的数据时最常使用BETWEEN。
当我刚进入这个行业时,我记得遇到新手询问如何查看特定月份的数据。
我自己填写了BETWEEN声明,他们说错过了前几天和最后一天。
当时很困惑,但后来我想起来,我没有注意到 BETWEEN 是一个包边界。
这个问题给了我深刻的教训。

查看上次处理销售报告的时间。
我有一个名为 sales_data 的表和一个名为 sale_date 的日期字段。
客户想要2 02 3 年第二季度的数据。
我手动写了“2 02 3 -04 -01 ”和“2 02 3 -06 -3 0”,但没有找到6 月3 0日的数据。
我检查了文档,看来 MySQL 包含日期比较的界限,但某些系统可能有所不同,因此您需要编写 SQL 并再次运行它来检查。

有趣的是,一些数据库对日期格式特别顽固。
例如,我们有使用 Oracle 的客户。
如果使用 BETWEEN 检查日期,则应编写 TO_DATE('2 02 3 -04 -01 ', 'YYYY-MM-DD') AND TO_DATE('2 02 3 -06 -3 0', 'YYYY-MM-DD')。
否则自己检查的话会报错。
这让我们明白,虽然SQL标准是统一的,但它在特定系统上的执行取决于系统的性质。

我最近经常使用 PostgreSQL,我发现它支持日期范围非常方便。
无论格式如何,请使用“2 02 3 -04 -01 ”和“2 02 3 -06 -3 0”。
但有一个问题。
如果字段包含NULL,BETWEEN直接返回空结果。
在处理数据不完整的表时,我很少发现这一点。
因此,在检查数据后,我习惯通过添加 WHERE sale_date IS NOT NULL 来过滤数据。

我记得数据是2 02 2 年的。
我们公司7 0%的SQL查询都使用BETWEEN来检查日期范围,简单明了。
但说实话,如果数据量特别大,比如上亿条记录,使用BETWEEN可能不是最好的选择。
我尝试对sales_data表运行BETWEEN查询,但是直接破了1 0亿条数据。
最后我用分区表+索引解决了这个问题。
我个人没有在这方面运行过任何更复杂的场景,但我记得周围有数据
最后,我会告诉你更多细节。
如果字段类型为DATE,检查2 02 3 -04 -01 会自动忽略时间部分,直接按日期检查。
但是,如果是 DATETIME,则肯定会计算 2 3 :5 9 :5 9 PM。
您需要注意这些细节。
否则,数据不匹配,你的老板就无法通过测试。

sql查询前100条数据怎么用SQL语句?

是的,这很容易。
数据库查询语法各不相同。
例如,MySQL 使用 LIMIT,Oracle 使用 ROWNUM,SQL Server 使用 TOP,Sybase 使用 SETROWCOUNT。
这同样适用于有条件的请求。
MySQL直接在WHERE后添加条件,Oracle和SQL Server在WHERE条件后添加ROWNUM或TOP,Sybase也添加WHERE条件。
你自己看看吧。