【发布时间】:2019-06-22 03:04:47
【问题描述】:
我有下表:
Id Start End
1 2019-01-28 07:00:00 2019-01-28 17:00:00
2 2019-01-28 17:01:00 2019-01-28 02:00:00
我想要做的是检查我何时运行查询,如果当前时间介于 id 1 或 2 之间。这是我的查询。
SELECT Id FROM MyTableName
WHERE CONVERT(varchar(5), GETDATE(), 108)
BETWEEN CONVERT(varchar(5), Start, 108) AND
CONVERT(varchar(5), End, 108)
如果我从 07 小时到 17 小时(ID 1)运行我的查询,目前工作正常,但是当我在 17:01 之后尝试它时,查询没有显示任何结果。使用我的查询,我发现这是因为 02:00 小时(id 2,02:00 表示凌晨 2 点)。
我该如何处理?
【问题讨论】:
-
02:00 真的意味着凌晨 2 点。您应该将结束时间设为 2019-01-29 02:00:00。
-
@rcs 主要问题是,在我的桌子上,我不会有所有日子的开始和结束日期时间。我的表只会包含两行以上的内容。如果我按照你说的做,查询明天、下周、下个月等会起作用吗?
-
没有。下个月,您需要将开始日期和结束日期更新为下个月。 2 月现在没有办法,您的表格内容仍在 1 月,您希望它们能够正常工作。
-
20190128 17:02不在20190128 17:01和20190128 02:00之间。该查询确实有效,因为它不会显示任何行作为返回。问题是为什么你说查询不起作用? -
@PhamX.Bach 你说得对,我编辑了我的问题,所以现在我说这不会显示任何结果,因为我希望如果我在晚上 8 点运行查询,查询会返回 ID 2 .
标签: sql sql-server sql-server-2012 sql-server-2014