SQLite:根据时间选择行?

LaL*_*LeX 1 sqlite time datetime

我有一个SQLite表,如下所示:

+-----------+-------+
| StartTime | Name  |
+-----------+-------+
|  08:00:00 | zone1 |
|  13:00:00 | zone2 |
|  17:30:00 | zone3 |
|  22:00:00 | zone4 |
+-----------+-------+
Run Code Online (Sandbox Code Playgroud)

我正在尝试编写一个将根据当前时间返回行的查询:

如果CurrentTime是08:30它将返回zone1如果CurrentTime是16:40它将返回zone2如果Currenttime是04:01它将返回zone4

等等...

到目前为止,我有一些运气但不完全是我想要的

SELECT * FROM table WHERE StartTime >= time('now', 'localtime') 
ORDER BY StartTime LIMIT 1;
Run Code Online (Sandbox Code Playgroud)

我已经尝试了上述语句的一些变体,但没有一个返回我之后的结果.

谢谢!

Joh*_*ker 5

如果添加"EndTime"字段,您将使您的生活更轻松,因为您可以简单地检查当前时间是否在开始和结束时间之内.

例如,如果您的数据库表包含以下内容......

+-----------+----------+-------+
| StartTime | EndTime  | Name  |
+-----------+----------+-------+
|  08:00:00 | 12:59:59 | zone1 |
|  13:00:00 | 17:29:59 | zone2 |
|  17:30:00 | 21:59:59 | zone3 |
|  22:00:00 | 07:59:59 | zone4 |
+-----------+----------+-------+
Run Code Online (Sandbox Code Playgroud)

...您可以简单地使用以下行的查询:

SELECT Name FROM table WHERE StartTime >= time('now', 'localtime')
AND EndTime <= time('now', 'localtime')
ORDER BY StartTime LIMIT 1;
Run Code Online (Sandbox Code Playgroud)