Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 在编辑器({})中单击可以为您执行缩进的图标。请记住,我的开始时间以分钟(整数)为单位,而不是以日期为单位。不管怎样,它都会划行?我使用创建表问题(开始日期、开始时间、结束时间)测试了这个问题。我做了你所说的一切@Oops\U\U打破了它,但它说的是ORA_Sql_Oracle - Fatal编程技术网

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日,来自
表的my
StartTime
为0(整数),选择必须包含您声明的寄存器。因为@start是1425,@end是15+1440,所以它不会带来这个寄存器。这看起来像SQL Server语法。但是OP使用的是Oracle。是的,我使用的是Oracle。要尝试您所做的操作将不起作用,因为在2016年8月18日,来自
表的my
StartTime
为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 ...