首页 > 解决方案 > 如何通过 SQL Server 获取特定时间段的数据

问题描述

我有多个设备 IMEI,它们不断发送数据。有一个表格可以查看设备发送最后一个数据的时间,格式如下:12/17/2020 4:05:02 PM。现在我想获取那些在过去 4 个月内发送数据的设备。我已经得到了连接,但无法理解我需要在Where子句中做出的条件。

标签: sqlsql-serverdatetimewhere-clause

解决方案


SQL Server 在将字符串转换为日期方面非常灵活,因此您应该能够只使用convert()orcast()并进行直接过滤。

所以:

where convert(datetime, mycol) >= dateadd(month, -4, getdate())

这会过滤从当前日期/时间开始的最近 4 个月的数据。如果您想要整个月份(当前月份和前三个月)

where convert(datetime, mycol) >= dateadd(month, -3, datefromparts(year(getdate()), month(getdate()), 1)

推荐阅读