SQL语句:两个时间区间段,只要有交集,就能筛选出来

设定固定时间段:8.2---》8.5

也就是:两个时间段,只要有交集就能筛选出来:

下面的两个sql语句,实现的效果是一样的:

1:$sql="select * from fs_ads where `start_time` <= ‘$ed‘ and `end_time` >= ‘$sd‘";

2:

$sql="select * from (
select ads_id,file_id,client_type,client_name,brand,model,cal_type start_time,end_time,
CASE 
when (start_time>=‘$sd‘) then start_time
when (start_time<‘$sd‘) then ‘$sd‘
end as start1,
CASE 
when (end_time>=‘$ed‘) then ‘$ed‘
when (end_time<‘$ed‘) then end_time
end as end1
 from fs_ads )
 a where a.start1<=a.end1;
";

注:$sd,$ed是用户选择的时间

参考:http://www.cnblogs.com/hupengyin/p/6051145.html

时间: 2024-10-19 15:07:43

SQL语句:两个时间区间段,只要有交集,就能筛选出来的相关文章

sql语句 关于日期时间、类型转换的东西

(一) 1, select update_date, CONVERT(VARCHAR(30),update_date,111) jj ,CONVERT(VARCHAR(30),update_date,8) aa from report_month   //update_date为datetime型,结果显示为: update_date                                     jj                          aa 2007-01-06 16:

SQL语句获取各种时间的方法

SQL语句获取各种时间的方法1. 当前系统日期.时间select getdate() 2. dateadd 在向指定日期加上一段时间的基础上,返回新的 datetime 值例如:向日期加上2天select dateadd(day,2,'2004-10-15') --返回:2004-10-17 00:00:00.0003. datediff 返回跨两个指定日期的日期和时间边界数.select datediff(day,'2004-09-01','2004-09-18') --返回:174. dat

SQL语句中格式化时间

to_char(CREATETIME,'yyyy-MM-dd') SQL语句中格式化时间

Sql server 查询指定时间区间工作日数、休息日数等日期操作

1.查询指定时间区间的工作日 这个主要难点是法定节假日,国家的法定节假日每年都不一样,还涉及到调休,所以我们设计一个假日表.主要字段有年份,类型(是否调休),假期日期.如下: CREATE TABLE [dbo].[Holidays]( [ID] [int] IDENTITY(1,1) NOT NULL, [Holiday] [datetime2](7) NULL,--假期日期 [YearS] [char](4) NULL,--年份 [daytype] [int] NULL--类型 ) 添加好当

MySQL 动态sql语句执行 用时间做表名

1. 描述 在使用数据的时候,我时候我们需要很多数据库,而且想用时间来做表名以区分.但是MySQL在存储过程中不支持使用变量名来做表名或者列名. 比如,有一个表我们想以"2015-07-16 12:00:00"命名. 2. 解决方案 如果只是更换一个普通的表名的话,很简单,直接使用下面sql语句即可: alter table old_table_name rename new_table_name 但是要以时间为表名,动态命名的话就不可以了.首先我们可以用NOW()函数获取系统当前的时

MySQL 动态sql语句运行 用时间做表名

1. 描写叙述 在使用数据的时候,我时候我们须要非常多数据库,并且想用时间来做表名以区分.可是MySQL在存储过程中不支持使用变量名来做表名或者列名. 比方,有一个表我们想以"2015-07-16 12:00:00"命名. 2. 解决方式 假设仅仅是更换一个普通的表名的话,非常easy.直接使用以下sql语句就可以: alter table old_table_name rename new_table_name 可是要以时间为表名,动态命名的话就不能够了.首先我们能够用NOW()函数

统计mysql里每条SQL语句执行的时间

概述 通常为了测试一些工具的性能,不得不用数据说话.数据可以客观地证实一些东西.例如关于一些数据库中间件的性能,对于一个初学者来说只会看到表面上的夸词.我们不得不去证实,那就用具体的查询语句测试.然而每每在执行完一条语句,眼巴巴的看着黑屏一类的客户端,不由得打瞌睡走神,统计起来也头疼. 方法 打开mysql客户端 mysql -h127.0.0.1 -uroot -proot -P3306 选择数据库 use dbtest; 设置profiling set profiling=1; 执行SQL语

MySQL sql语句获取当前日期|时间|时间戳

1.1 获得当前日期+时间(date + time)函数:now() mysql> select now(); +-------+ | now() | +-------+ | 2013-04-08 20:56:19 | +-------+ 除了 now() 函数能获得当前的日期时间外,MySQL 中还有下面的函数: current_timestamp() ,current_timestamp ,localtime() ,localtime ,localtimestamp - (v4.0.6) ,

sql语句中日期时间格式化查询

      今天在做会员管理系统搜索时,我发现以前的搜索时间方式不太科学,效率也不是太高.由其是在查询指定的时间相等的时候,我在数据库中都存这样的时间格式"2007-5-22 14:32:12"当我们在查询2007-5-22是否与它相等,结果是不相等的.      所我们都喜欢找其它途径来解决这个问题.但是我发现我们的方法都不是太好,因为我们有的时候对sql sever的语句特性还了解的不够彻底.所以我查询了查sql server有帮助,终于发现个好东西,可以解决这个问题. CONVE