码迷,mamicode.com
首页 > 其他好文 > 详细

关于时针和分钟重合次数的计算

时间:2015-09-17 15:19:55      阅读:193      评论:0      收藏:0      [点我收藏+]

标签:sql server

在网上看到一道这样的题目。

在一天的24小时之中,时钟的时针、分针和秒针完全重合在一起的时候有几次?都分别是什么时间?你怎样算出来的?

/*
1、一天是86400秒,表盘是半天一个周期,则只需要计算半天时间为43200秒 
2、分针和时针重合,即分针和时针的角度是一样。
3、秒针走一秒,分针走360°/60 = 6°,时针走360°/43200
4、中午12点,则算是重回原点。
*/
declare @num int
select @num = 0
while @num <= 43200  /*循环次数,秒针走的次数*/
begin
    if(convert(numeric(18,3),360.0/43200*case when @num = 43200 then 0 else @num end) = convert(numeric(18,3),((@num*1.00/60)%60)*6) )  /*计算秒钟每走一秒,则时针和分钟相应的走的角度*/
	begin
	    print ‘当前秒数:‘+cast(@Num as char(6)) + ‘时针和分针重合,时间是 ‘ + cast(@Num as char(6)) + ‘  ‘
		                                                       + left(‘00‘,2-len(@Num/3600))+cast(@Num/3600 as varchar(3)) + ‘:‘ /*重合时间时,时针*/
		                                                       + left(‘00‘,2-len((@Num/60)%60))+cast(((@Num/60)%60) as varchar(3)) + ‘:‘ /*重合时间时,分针*/
															   + left(‘00‘,2-len(@Num%60))+cast((@Num%60) as varchar(4)) /*重合时间时,秒针*/
	end
    --print cast(@Num as char(6)) + ‘   时针: ‘ + cast(convert(numeric(18,2),360.0/43200*@Num) as varchar(50)) + ‘      分针:‘+cast(convert(numeric(18,2),((@num*1.00/60)%60)*6) as varchar(50))
    select @Num = @Num + 1
end

结果如下:

当前秒数:0     时针和分针重合,时间是 0       00:00:00
当前秒数:43200 时针和分针重合,时间是 43200   12:00:00

因此在一天24小时中,最开始走计算一次,中午12点计算一次,凌晨12点也是0点再次计算一次,则算三次

本文出自 “360°ERP” 博客,请务必保留此出处http://360erp.blog.51cto.com/1946797/1695680

关于时针和分钟重合次数的计算

标签:sql server

原文地址:http://360erp.blog.51cto.com/1946797/1695680

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!