Sql 在编辑器({})中单击可以为您执行缩进的图标。请记住,我的开始时间以分钟(整数)为单位,而不是以日期为单位。不管怎样,它都会划行?我使用创建表问题(开始日期、开始时间、结束时间)测试了这个问题。我做了你所说的一切@Oops\U\U打破了它,但它说的是ORA
Sql 在编辑器({})中单击可以为您执行缩进的图标。请记住,我的开始时间以分钟(整数)为单位,而不是以日期为单位。不管怎样,它都会划行?我使用创建表问题(开始日期、开始时间、结束时间)测试了这个问题。我做了你所说的一切@Oops\U\U打破了它,但它说的是ORA,sql,oracle,Sql,Oracle,在编辑器({})中单击可以为您执行缩进的图标。请记住,我的开始时间以分钟(整数)为单位,而不是以日期为单位。不管怎样,它都会划行?我使用创建表问题(开始日期、开始时间、结束时间)测试了这个问题。我做了你所说的一切@Oops\U\U打破了它,但它说的是ORA-00902。(抱歉耽搁了)。这看起来像SQL Server语法。但是OP使用的是Oracle。是的,我使用的是Oracle。要尝试您所做的操作将不起作用,因为在2016年8月18日,来自表的myStartTime为0(整数),选择必须包含您声
在编辑器({})中单击可以为您执行缩进的图标。请记住,我的开始时间以分钟(整数)为单位,而不是以日期为单位。不管怎样,它都会划行?我使用
创建表问题(开始日期、开始时间、结束时间)测试了这个问题。
我做了你所说的一切@Oops\U\U打破了它,但它说的是ORA-00902。(抱歉耽搁了)。这看起来像SQL Server语法。但是OP使用的是Oracle。是的,我使用的是Oracle。要尝试您所做的操作将不起作用,因为在2016年8月18日,来自表的myStartTime
为0(整数),选择必须包含您声明的寄存器。因为@start是1425,@end是15+1440,所以它不会带来这个寄存器。这看起来像SQL Server语法。但是OP使用的是Oracle。是的,我使用的是Oracle。要尝试您所做的操作将不起作用,因为在2016年8月18日,来自表的myStartTime
为0(整数),选择必须包含您声明的寄存器。因为@start是1425,@end是15+1440,所以它不会带来这个寄存器。稍后再试。谢谢编辑:成功了。现在我将在我的查询中实现这一点。你的想法是这样的:我不知道它是否能更好。稍后再试。谢谢编辑:成功了。现在我将在我的查询中实现这一点。你的想法是这样的:我不知道是否能更好。
date | start time | end time
16-08-2016 00:00:00 | 1420 | 90
SELECT * FROM TABLE WHERE (((1320 >= StartTime OR 1320 <= EndTime) AND EndTime < StartTime AND MyDate <= '17/08/2016') OR
((1350 >= StartTime OR 1350 <= EndTime) AND EndTime < StarTime AND MyDate <= '17/08/2016'))
select date, starttime, DATEADD(mi, endtime,Dateadd(mi,starttime, cast(date as datetime))) AS Enddatetime
FROM yourtable
declare @date datetime, @start int, @end int
select @date = '17/8/2016', @start = 1425, @end = 15
-- convert minutes past midnight
select @end = @end + case when @start > @end then 1440 else 0 end
select *
from Table
where MyDate = @date
and StartTime between @start and @end
and EndTime + case when StartTime > EndTime then 1440 else 0 end between @start and @end
where MyDate = @date
and StartTime < @end
and EndTime + case when StartTime > EndTime then 1440 else 0 end > @start
SELECT * FROM
(
-- This inline view gets everything in your table, plus the start_datetime and end_datetime as calculated from your various fields.
SELECT your_table.*, start_date + ( start_time / 1440 ) start_datetime, start_date + case when end_time < start_time then end_time + 1440 else end_time end end_datetime FROM your_table
)
WHERE start_datetime between ... whatever date range you want ...
AND end_datetime between ... whatever date range you want ...