【问题标题】:Time value comparison using between operator in SQLSQL中使用运算符之间的时间值比较
【发布时间】:2020-11-13 05:42:56
【问题描述】:

我知道 SQL 以 24 小时格式保存时间值。我的问题是,当我在运算符之间使用以下查询时,时间比较不起作用。

 Select T11 from ScheduleTable Where CONVERT(VARCHAR,CONVERT(Time, '23:22:00', 0), 100) 
between CONVERT(varchar(15),CAST('19:00:00' AS TIME), 100) and 
CONVERT(varchar(15),CAST('00:00:00' AS TIME), 100) 

上述查询无效,显示空结果。例如,我在上述查询中使用了静态时间,但在实际场景中我使用了当前时间。

【问题讨论】:

  • 它不起作用,因为 00:00
  • 是的,亲爱的。谢谢

标签: sql


【解决方案1】:

我不确切知道您要在这里做什么,但'23:22:00' 应该是 SQL Server 中的有效时间文字。因此,以下查询应返回所有记录:

SELECT T11
FROM ScheduleTable
WHERE '23:22:00' BETWEEN '19:00:00' AND '23:59:59';

【讨论】:

  • 谢谢,从 ScheduleTable WHERE '23:00:00' BETWEEN '21:00:00' AND '00:00:00' 中选择 T11,但这不起作用
  • @KhuramJan 如果您还想包含午夜本身,则必须为此添加另一项检查。
  • 谢谢,是的,我明白午夜的日期会发生变化,这就是它不起作用的原因。我必须使用 '23:59:59' 而不是 '00:00:00'
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-05-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多