如何在SQL中按时间段查询数据

糟糕,SQL 和 Access 日期格式非常不同。
我以前也遇到过问题。
我记得有一次,2 009 年我接手了一个项目。
该项目中同时使用了 SQL Server 和 Access Data 表。
日期格式不一样,我花了很长时间才弄清楚。

当时,我写了一个SQL Server查询来过滤2 008 年7 月1 日到1 2 月3 1 日的数据。
结果如下:SELECT DATE FROM TABLE > '2 008 -7 -1 ' AND DATE OCCURRED < '2 008 -1 2 -3 1 '。
结果报错,说日期格式不正确。
当时我还很困惑,后来发现SQL Server的日期格式是用引号括起来的,这和Access的不一样。

然后我快速更改格式并写道:从表中选择出现日期 > '2 008 -7 -1 ' 和出现日期 < '2 008 -1 2 -3 1 ' 然后成功过滤数据。

不过后来我发现Access的日期格式也有点意思。
我写过一次访问请求;过滤2 008 年7 月1 日到1 2 月3 1 日的数据。
它显示:SELECT FROM TABLE WHERE EventDate > 2 008 -7 -1 AND OccurrenceDate < 2>这两个数据库的日期格式真是让人头疼。
不过,现在想起来,还蛮有趣的。
毕竟,每个数据库都有自己的小怪癖。

顺便说一句,我已经写过有关您提到的日期一周年信息的问题。
使用语句 datediff(week, ordTime, getdate()-1 ) = 0,结果非常好。
您还可以使用 datediff(day, ordTime, getdate()-1 )=0 按日期查询所有数据。
我也尝试过这个,效果很好。

还有一个我用来查询过去3 0天和上个月数据的数据,即 SELECTFROMAwheredatediff(d,datetime,getdate())<=3 0 和 SELECTFROMAWHEREDATEDIFF(m,shijian,GETDATE())<=1 这两句话非常实用。

查询日期记录的最后一种替代方法(我也尝试过)是使用 GAddTimeBETWEENCONVERT(datetime,LEFT(GETDATE(),1 0)+'00:00:00.000') ANDCONVERT(datetime,LEFT(GETDATE(),1 0)+'00:00:00.1 )。
这个方法非常巧妙。

嘿,说到这些数据库工作,它们确实一直在变化,你必须不断学习。

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

是的,这就是问题所在。
BETWEEN 自己检查日期范围很简单。

BETWEEN 运算符就像在中心画一条线,并检查这条线上的所有日期。

语法:SELECT FROM 表名 WHERE 日期字段 BETWEEN 开始日期 AND 结束日期;
注意:日期格式必须正确,不要随意输入。

例如,要检查2 02 3 年1 月1 日到7 月1 日的订单,您可以这样写:
SELECT FROM order WHERE order date BETWEEN '2 02 3 -01 -01 ' AND '2 02 3 -07 -01 ';
两个边界值都包括在内,所以不要错过它们。

亲自尝试一下这个技巧是否实用。

SQL查询最近三个月的数据(查询最近几天,几

这是一个陷阱,不要使用 sysdate-1 0,它很容易出错。
如果时间段太长,数据量会显着增加。