假设我在sqlalchemy中定义了一对多的关系。
我的父表有一堆孩子。这些孩子的开始和结束时间都与他们有关。时间是datetime.time对象,其中小时必须在0到23之间。当结束时间出现在开始时间之前(如从8:00开始到01:00结束),像{{1}这样的简单查询}不起作用。
有没有办法让这个陈述有效?
(Children.start_time <= search_time) & (search_time >= Children.end_time)
我收到了 parent_query = Parents.join(Parents.children).filter(
(Child.start_time <= search_time) &\
(
(
extract('hour', Child.end_time) if\
extract('hour', Child.end_time) < extract('hour', Hours.start_time) else\
extract('hour', Child.end_time) + 24
)
>= search_hour
) &\
(Child.end_time.minute >= search_minute)
)
答案 0 :(得分:3)
您需要使用CASE
声明:
case([
(extract('hour', Child.end_time) < extract('hour', Hours.start_time), extract('hour', Child.end_time))
], else_=extract('hour', Child.end_time) + 24)