我需要检查时间戳范围是否在数据库中两个字段的时间戳范围内。
我的数据库中有2019-09-02 09:20:00和2019-09-02 09:28:00
我需要检查2019-09-02 09:22:00和2019-09-02 10:40:00是否在上述时间范围之间。
---更新---
以下是我使用的查询。
self.cursor.execute(
"SELECT * FROM time_tracker.time_tracker_details WHERE((created_time <= %s AND stopped_time >= %s) OR (created_time >= %s AND stopped_time <= %s))"
"ORDER BY created_time ASC",
[str(created_time), str(stopped_time), str(created_time), str(stopped_time)])
预先感谢
答案 0 :(得分:0)
您可以尝试为AND更改OR,其中日期大于created_time并且小于stop_time
示例:
AND ((created_time <= %s AND created_time <= %s) AND (stopped_time >= %s AND stopped_time >= %s))
答案 1 :(得分:0)
对于我来说,要测试两个日期是否都在created_time
和stopped_time
之间还是其中之一是不是很清楚。
以下答案假设您要测试两个日期都在(started_time
-stopped_time
)范围内
实际上,SQL中有一个关键字BETWEEEN
,我发现它实际上是描述性的。您可以像这样使用它
..WHERE (%s BETWEEN created_time AND stopped_time) AND (%s BETWEEN created_time AND stopped_time)
提高可读性;请记住,BETWEEN
是包容性的,这里您需要什么。
答案 2 :(得分:0)
终于找到了我想要的东西
SELECT * FROM time_tracker.time_tracker_details WHERE parent_tt_id = '' AND user_id = %s AND
(( %s >= created_time AND stopped_time >= %s)) OR (created_time >= %s AND stopped_time <= %s)
OR ( %s >= created_time AND ( %s <= stopped_time AND stopped_time <= %s))
OR (( %s <= created_time AND created_time <= %s) AND stopped_time >= %s))
ORDER BY tt_id ASC