如果需要返回一个时间段之间一个随机时间,那么用SQL函数应该如何表示呢?下面就将为您介绍返回一个时间段中某个随机时间的Sql函数的例子,供您参考,希望对您学习SQL函数有所启迪。
成都创新互联-专业网站定制、快速模板网站建设、高性价比城区网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式城区网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖城区地区。费用合理售后完善,十年实体公司更值得信赖。
SQL code
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
/******************************
* 函数名: RandDateTime
* 作用: 返回两个时间范围内的一个随机时间
* 参数:
* @RandNum: 0-1之际随机数值 建议 Rand()
* @StartTime: 第一个时间
* @EndTime: 第二个时间
* Author: 兰习刚
* Date: 2009-11-30
*******************************/
ALTER Function RandDateTime(@RandNum Decimal(38,18),@StartTime DateTime,@EndTime DateTime)
Returns DateTime
As
Begin
Declare @HourDiff Decimal(38,18) --两个时间之间的小时差值
Declare @MsPartDiff Decimal(38,18) --毫秒部分的差值
Declare @SmallDate DateTime
Declare @ReturnDateTime DateTime
/*取各部分差值*/
Set @HourDiff = DateDiff(hh,@StartTime,@EndTime)
Set @MsPartDiff = Abs(DateDiff(ms,DateAdd(hh,@HourDiff,@StartTime),@EndTime))
Select @SmallDate=(Case When @HourDiff>0 Then @StartTime Else @EndTime End) --取较小的时间
Set @HourDiff = Abs(@HourDiff)
ActionLable:
Declare @HourDecimal Decimal(38,18) --小时的小数部分
Declare @HourString varchar(200)
Set @HourDiff = @HourDiff * @RandNum
Set @HourString = CONVERT(VARCHAR(200),@HourDiff)
Set @HourString = SubString(@HourString,CharIndex('.',@HourString)+1,Len(@HourString))
Set @HourString = '0.' + @HourString
Set @HourDecimal = Convert(Decimal(38,18),@HourString) --获得小时的小数部分
Set @MsPartDiff = (@MsPartDiff + @HourDecimal * 3600*1000) * @RandNum
/*毫秒差值
由于之前@MsPartDiff是两个时间小时之后的毫秒差值
@HourDecimal * 3600*1000 有小时的小数部分的毫秒差值 不会大于1小时
毫秒不会溢出
*/
Set @ReturnDateTime = DateAdd(hh,@HourDiff,@SmallDate)
Set @ReturnDateTime = DateAdd(ms,@MsPartDiff,@ReturnDateTime)
Return @ReturnDateTime
End
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
【编辑推荐】
基于时间SQL函数详解
巧用SQL函数实现身份证15位变18位
教您使用SQL中的TRUNC函数
详解SQL中循环结构的使用
SQL中表变量的不足
当前名称:返回一个时间段中某个随机时间的Sql函数
标题来源:http://www.shufengxianlan.com/qtweb/news39/222289.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联