sql时间段算法
需求:领导要求写时间段算法,格式如下
- :-:
- :-:
- :-:
- :-:
- :-:
- :-:
- :-:
- :-:
- :-:
- :-:
- :-:
- :-:
- :-:
- :-:
- :-:
- :-:
一小时制
- :-:
- :-:
- :-:
- :-:
- :-:
- :-:
- :-:
- :-:
- :-:
- :-:
- :-:
- :-:
- :-:
- :-:
- :-:
- :-:
- :-:
- :-:
- :-:
- :-:
半小时制
一小时制比较好解决,直接循环即可
- --如果是一小时时间段
- DECLARE @a INT
- SET @a=7
- WHILE @a<23
- BEGIN
- PRINT REPLICATE('',2-len(@a))+CAST(@a AS VARCHAR(10))+':00-'+REPLICATE('',2-len(@a+1))+CAST(@a+1 AS VARCHAR(20))+':00'
- SET @a=@a+1
- END
半小时制
- --如果是半小时时间段
- --07:30-23:30
- DECLARE @start VARCHAR(20)
- DECLARE @end VARCHAR(20)
- SET @start='07:00'
- SET @end='22:00'
- DECLARE @b INT
- SET @b=CAST(LEFT(@start,2) AS INT)--取小时数
- WHILE @b<CAST(LEFT(@end,2) AS INT)
- BEGIN
- DECLARE @str VARCHAR(10)
- DECLARE @str1 VARCHAR(10)
- SET @str=CAST(@b AS VARCHAR(10))
- SET @str=REPLICATE('',2-len(@str))+@str
- SET @str1=CAST(@b+1 AS VARCHAR(10))
- SET @str1=REPLICATE('',2-len(@str1))+@str1
- IF(CHARINDEX('',@start)>0)--如果开始时间包含半小时
- BEGIN
- PRINT @str+':'+''+'-'+@str1+':00'
- IF((@str1+':00')=@end)
- BREAK
- PRINT @str1+':00'+'-'+@str1+':30'
- END
- ELSE
- BEGIN
- PRINT @str+':00'+'-'+@str+':30'
- PRINT @str+':'+''+'-'+@str1+':00'
- IF(@b=(CAST(LEFT(@end,2)AS INT)-1) and CHARINDEX('',@end)>0)--如果结尾时间有半小时
- PRINT @str1+':'+''+'-'+@str1+':30'
- END
- SET @b=@b+1
- END
半小时制感觉写的不好,智商捉鸡,欢迎各路大神指正。
sql时间段算法的更多相关文章
- oracle:SQL时间段
oracle: SQL时间段 CREATEDATE between to_date('" + startDate + " 00:00:00','yyyy-mm-dd hh24:mi ...
- 分页sql存储过程算法
/****** Object: StoredProcedure [dbo].[PRO_Pub_FenYe] Script Date: 08/04/2014 11:14:22 ******/ SET A ...
- 常用的SQL分页算法及对比
SQL Server 2005引入的新方法. SELECT * FROM (SELECT ROW_NUMBER() OVER(ORDER BY keyField DESC) AS rowNum, * ...
- sql 时间段内没有的数据等于0
如何实现没有的时间段中使用0来填充?? if object_id('[A]') is not null drop table [A] go create table [A]([日期] datetime ...
- SQL 时间段转换格式
), ): :57AM ), ): ), ): ), ): ), ): ), ): ), ): ), ): , ), ): :: ), ): :::827AM ), ): ), ): ), ): ), ...
- sql存储过程算法
MSSQL执行 : exec proc_NAME ORACLE : beginproc_NAME;commit;end; 1.求素数 MSSQL; CREATE proc [dbo].[EXEC003 ...
- 电表读数归零回滚SQL处理算法
在采集电表数据的时候,可以发现有些电表设备读数会发生回滚.这时候,如果单纯的累加计算用电量,就会出现负值.当然,这也许和电表的质量有关系. “RTQty”(当前读到的读数).“LastQty”(上次读 ...
- SQL SERVER 算法执行效率
较差的性能 <---没有索引(为每个表执行表扫描) --->非聚集非覆盖索引(seek+局部有序扫描+lookups) ---> 聚集索引(seek+局部扫描) ---> 非聚 ...
- sql 时间段交叉查询是否有交集
--双11活动结束时间大于当前服务器时间代表有效期的活动 --实现1 select * from ProdCar A where A.EndDate> GETDATE() and A.EndDa ...
随机推荐
- Android中Toast的用法简介
转自:http://www.cnblogs.com/GnagWang/archive/2010/11/26/1888762.html Toast是Android中用来显示显示信息的一种机制,和Dial ...
- LA 6540 Fibonacci Tree
以前做过的题···重新做一遍之后怎么做怎么wa···后来GG了···第二天看不知道为啥A了···难道我失忆了? 题意:无向图,边有黑色和白色两种颜色,求是否存在一个生成树中白边的个数是斐波那契数. 解 ...
- Webservice、WSDL三种服务访问的方式【转】
http://www.cnblogs.com/yongfeng/archive/2013/01/30/2883146.html 用soapUI试了下wsdl的测试,但还是不知道webService和W ...
- HDU 1561-The more, The Better(树状背包)
题意: n个城堡,每个有一定的财富,有些城堡不能直接攻克,要攻克这些城堡必须先攻克其他某一个特定的城堡,求应攻克哪m个城堡,获得最大财富. 分析:dp[i][j],以i为根的子树,攻克j个城堡,获得的 ...
- HDU4289 Control 最大流
经典题,求去掉若干个点,使得两个点不在连通,总价值最少 所以拆点最小割,除了拆点边,流量都为无穷,拆点边是流量为价值 #include <iostream> #include <cs ...
- Git 基础 - Git Aliases
$ git config --global alias.co checkout $ git config --global alias.br branch $ git config --global ...
- C# 检测机器是否有声卡设备
有时候我们的程序需要进行音频的播放,则我们首先需要判断机器是否有声卡能够进行音频的播放.在网上找了一下没有发现太多关于如何检机器是否有声卡的例子.我在看了一些文档后自己写了一个小测试程序,如果机器装有 ...
- 计算N的阶层
int factorial(int n) { int i, result; ; i <= n; i++) result *= i; return result; } int factorial2 ...
- 五指cms筛选功能的实现:
筛选功能的实现: $_POST['page_urlrule'] = 'tuan-{$pinpai}-{$renqun}-{$type}-{$price}-{$area}-{$tese}-{$st}-{ ...
- Java 核心技术-集合-集合框架
说在前面的话: 关于Core Java 集合方面的博文网上已经写烂了,为啥我还要写呢? 答:他们写的都很好,我也学到不少东西,如果把我当做一个系统的话,学习别人.看书.读源码是输入,但是往往形不成一个 ...