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

记得有一次,我在帮老李调试一个旧系统时,他的Access数据库中的日期查询总是出错。
数据明明是存在的,只是找不到。
我仔细一看,发现他用的是2 008 -7 -1 的格式。
我提醒他尝试>'2 008 -7 -1 '和<'2 008 -1 2 -3 1 '。
起初他不相信,但尝试之后,他是对的。
我实在不明白为什么SQL Server和Access都是日期的时候写法会这么不同。

SqlServer数据库中,日期的模糊查询

上周,有客户问我如何查看SQL Server数据库的文件路径,我直接教他怎么做。
首先需要打开SQL Server数据库,然后连接目标数据库。
连接完成后,你会找到数据库的名称,右键单击并选择“属性”。
在弹出的属性窗口中,向左查找,找到“选择页面”,然后单击“文件”选项卡。

此后,您将看到正确的数据库文件信息。
逻辑名显示数据文件和日志文件的文件名,路径是它们存储的位置。
请记住,数据文件通常以 .mdf 结尾,日志文件以 .ldf 结尾,正如我在此处看到的那样。

看,这是我电脑上.mdf和.ldf文件的路径,很清晰。
无论如何,你弄清楚了。
如果你还是不明白,再问我。
我还在思考这个问题,以及如何更直观地呈现给初学者。

SQL SERVER查询时间是一年中第几周的函数

上周试过这个。

选择第 4 周。

命令是:
sql SELECT DATEPART(wk, '2 01 7 -1 -1 ') AS WeekOfYear
结果是4
这就是这个函数的作用。

这取决于你。

SQL语句查询特定时间段的数据怎么写

当天,小李帮我调试了SQL,但他选择的数据总是错误的。
例如2 008 年查7 月1 日到1 2 月3 1 日的记录时,直接用参考点写日期。
有人警告我,最好在 SQL Server 中使用日期时间类型,或者使用 CONVERT 函数来转换它们。
他尝试了很长时间,发现使用DATEDIFF函数更安全。
这很有趣。
每当你教别人如何使用 SQL 时,你都会学到这些细节。

例如,查询第一年数据的例子;使用DATEDIFF(week, ordTime, getdate()
1 ) = 0 这种写法在2 007 年刚学SQL的时候还是容易出错,但现在已经非常熟练了。
我记得当他第一次写这篇文章时,他是用月份来写周的,但已经很长一段时间所有记录都与月份一致了。

查看日常记录;使用 DATEDIFF(day, ordTime, getdate()
1 ) = 0。
这种写法其实更有意义,不过小李说公司老代码中用的比较多的是CONVERT(datetime, LEFT(GETDATE(), 1 0))。
另一件事是,他们说 GETDATE() 有时在他们的系统上超时。
所以我们需要 CURRENT_TIMESTAMP。

过去3 0天和上个月的查询非常实用。
特别是对于上个月的查询。
DATEDIFF(m, shijian, GETDATE()) <= 1 .它比直接使用 GETDATE()
3 0 天更可靠。
因为有些系统时间不正确。
但如果服务器时间不对,这些查询结果也会出错……
现在他写SQL的速度很快,不过几年。
月份和日期仍然偶尔会混淆。
例如,搜索 2 008 时,您可以将“2 008 -01 -01 ”写入“2 008 -1 2 -3 1 ”,而不是“2 008 ”。
这让我想起了我开始项目时写的是 AND 而不是 OR。
结果,系统将年和月作为字符串进行比较,因此找到了 2 008 年 1 月和 1 2 月的所有记录。

说实话,SQL 中的日期处理比看起来要复杂得多。
例如,当使用BETWEEN时,他总是忘记添加时间段,导致数据不完整。
现在,在他写此类问题之前,我将首先在查询分析器中运行 CONVERT(datetime, '2 008 -07 -01 ') 以确保格式正确。

但有时我想知道,为什么不使用参数化查询呢?他说领导发现同样的SQL很难写,必须把SQL写两遍。
这是真实的。
很多小公司的发展过程是随意的。
但话虽如此,最终还是要有人为虚假写作付出代价,对吗?