gpt4 book ai didi

mysql - 如何在 SQLite 中使用 CompareTo() 的功能?

转载 作者:行者123 更新时间:2023-11-29 10:15:39 25 4
gpt4 key购买 nike

我正在尝试在 SQLite 数据库中执行查询,以查看某些字符串是否在两个字段值的范围内。我有两个字段,start_timeend_time,它们的值存储为 HH:MM 格式的字符串文本(不是时间戳),并且我在 JavaScript 中获得相同的时间也将 (HH:MM) 格式设置为字符串。我想检查从 JavaScript 获取的值是否在某些记录的 start_timeend_time 值之间。

如何在 SQL 语句中执行该测试?我在其他语言(特别是 Java)中遇到了 compareTo() 方法,它返回一个正值、0 或负值,具体取决于两个字符串中哪个更大(按字母顺序排列),我希望我可以使用如果 SQLite 中有等效的方法,则使用相同的方法。我怎样才能实现它或者我怎样才能进行检查?

最佳答案

当您处理可接受的时间字符串时:-

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

SQL As Understood By SQLite - Date And Time Functions

然后在您提到的情况下,您可以使用 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')
;

看起来像:-

enter image description here

然后:-

SELECT * FROM times WHERE time(start_time) >= time('11:00') AND time(end_time) <= ('17:00');

将查找在 11:00 或之后开始在 17:00 或之前结束的时间。

如果应用于示例表,结果将是:-

enter image description here

  • 12:15 - 12:3611:00 之后开始,在 17:00 之前结束,因此包含在内。
  • 13:26 - 17:50,尽管在​​ 11:00 之后开始,但不在 17:00 或之前开始,因此被排除在外。
  • 11:56 - 13:02 将包含在内。
  • 10:45 - 12:00 不会在 11:00 之前开始,因此被排除在外。

关于mysql - 如何在 SQLite 中使用 CompareTo() 的功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50145863/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com