我可以为您翻译,以下是内容:
我在数据库表中有两个日期时间列:@Start 和 @End。
这两个列都包含日期和时间,例如:
@Start: 2018-10-01 19:00:00
@End: 2018-10-10 23:59:00
我想知道当前日期是否恰好处于两个日期时间之间,考虑日期和时间。
例如,
2018-10-08 16:37
和 2018-10-10 23:59:00
将匹配此范围,
而2018-10-11 00:00:00
则不会。
(在这种情况下,该日期比结束日期晚一分钟,因此不在我的日期时间范围内)。SELECT Id FROM Table1 WHERE GETDATE() BETWEEN Start AND End
我在真实代码中不使用GETDATE(),而是使用参数。问题在于当前日期参数可能包含秒和毫秒,例如
23:59: 59.123
。我的代码将这样的日期视为不符合给定范围。但我不关心秒和毫秒。是否有解决方法?
更新:
我想要实现的精度是分钟。因此,我甚至不需要考虑秒或毫秒。我将使用的日期时间格式是 'yyyy-MM-dd hh-mm',但我不知道如何使用BETWEEN子句将开始和结束转换为所示格式,以便可以比较日期。
GetDate()
始终返回当前日期和时间。但为了从表中获取记录,请使用表列而不是GetDate()
。 - Nareen Babudatetime
且您尝试插入毫秒值,例如00:00:00.001
或00:00:00.002
时。这些值会被四舍五入,最终得到的结果是00:00:00.000
或00:00:00.003
。 - Salman AEndDate
是否包含这些毫秒?不是的。(PS:你的问题是否告诉我们有关毫秒或给定样本数据的任何信息?恐怕不是。)常见的解决方案是使用下一个日期的“00:00:00”的<
,而不是为了与 23.59.59.(9) 的<=
而战。 - Ivan Starostin