我正在尝试在SQLite数据库中执行查询,以查看某些字符串是否属于两个字段的范围内。值。我有两个字段PROCEDURE proc3()
:
:
proc1(p1, p2);
proc2(p2);
:
:
END proc3;
和start_time
,其值存储为格式为HH:MM的字符串文本(不是时间戳),我在JavaScript中获得相同格式的时间(HH:MM)作为一个字符串。我想检查我从JavaScript获得的值是否落在某些记录的end_time
和start_time
值之间。
如何在SQL语句中执行该测试?我在其他语言(特别是Java)中遇到了方法end_time
,它返回一个正数,0或负数,这取决于两个字符串中哪一个更大(按字母顺序),我希望我可以使用相同的方法,如果它有SQLite中的等价物。我该如何实施呢?或者我该如何进行检查?
答案 0 :(得分:1)
当您处理可接受的时间字符串时: -
Time Strings A time string can be in any of the following formats: YYYY-MM-DD YYYY-MM-DD HH:MM YYYY-MM-DD HH:MM:SS YYYY-MM-DD HH:MM:SS.SSS YYYY-MM-DDTHH:MM YYYY-MM-DDTHH:MM:SS YYYY-MM-DDTHH:MM:SS.SSS HH:MM HH:MM:SS HH:MM:SS.SSS now DDDDDDDDDD
然后在您提及的情况下,您可以使用 time
功能来理解/识别时间。您可以将运算符与WHERE子句一起使用。
假设基于以下内容创建了一个名为times的表: -
DROP TABLE IF EXISTS times;
CREATE TABLE times (start_time TEXT, end_time TEXT);
INSERT INTO times VALUES
('12:15','12:36'),
('13:26','17:50'),
('11:56','13:02'),
('10:45','12:10')
;
看起来像是: -
然后: -
SELECT * FROM times WHERE time(start_time) >= time('11:00') AND time(end_time) <= ('17:00');
会在17:00或之前找到11:00 或之后开始的时间。
如果应用于示例表,结果将是: -
即。