set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go ALTER function [dbo].[fn_Randtime]
(
@begin_date datetime, --開始時間
@end_date datetime --結束時間
)
returns Datetime
as
begin declare @second varchar(50)
declare @Holiday int
declare @Holiday2 int
if @begin_date is null
SET @begin_date=DateAdd(month,-1,cast((convert(varchar(7),getdate(),121)+'-01 08:01:01') as datetime));
if @end_date is null
SET @end_date=DateAdd(month,-1,cast((convert(varchar(7),getdate(),121)+'-28 17:30:00') as datetime));
SET @second = DATEDIFF ( second , @begin_date,@end_date) declare @d1 datetime
declare @rand float
declare @SunHoliDay int
declare @Extended datetime
declare @MaxHoliDay datetime select @rand=re from v_RAND
set @d1 =dateadd(second,@rand*@second,@begin_date)
Select @HoliDay=Count(Holiday) From Topmixdata.dbo.HolidayCalendar Where Holiday=convert(varchar(10),@d1,120) And Status=0 --除去假日順延時間
Select @SunHoliDay=Count(Holiday) From Topmixdata.dbo.HolidayCalendar where Convert(varchar(7),Holiday,120)=Convert(varchar(7),@begin_date,120) And datepart(weekday,Holiday)=1
if @SunHoliDay>0
begin
SELECT @MaxHoliDay=dateadd(DAY,1,Max(Holiday)) FROM Topmixdata.dbo.HolidayCalendar where Convert(varchar(7),Holiday,120)=Convert(varchar(7),@begin_date,120)
Set @Extended=@MaxHoliDay
end --除去假日時間
while @HoliDay>0 OR datepart(weekday,@d1)=1 OR datepart(weekday,@d1)=7 OR (Convert(varchar(10),@d1,120)=Convert(varchar(10),@Extended,120))
begin
select @rand=re from v_RAND
set @d1 =dateadd(second,@rand*@second,@begin_date)
Select @HoliDay2=Count(Holiday) From Topmixdata.dbo.HolidayCalendar Where Holiday=convert(varchar(10),@d1,120) And Status=0
set @HoliDay=@HoliDay2
end --if datepart(weekday,@d1)=1
--begin
-- set @d1=dateadd(dd,2,@d1)
--end
--if datepart(weekday,@d1)=7
--begin
-- if datepart(dd,@d1)=1
-- set @d1=dateadd(dd,2,@d1)
-- else
-- set @d1=dateadd(dd,-1,@d1)
--end if datepart(hour,@d1) >17
begin
set @d1=dateadd(hour,-8,@d1)
end
if datepart(hour,@d1) <8
begin
set @d1=dateadd(hour,8,@d1)
end
if datepart(hour,@d1)>11 and datepart(hour,@d1)<14
begin
set @d1=dateadd(hour,-2,@d1)
end
if datepart(hour,@d1)=17 and datepart(mi,@d1)>30
begin
set @d1=dateadd(mi,-30,@d1)
end return @d1
end

SQL 创建随机时间的函数的更多相关文章

  1. Sql 中常用时间处理函数

    1.Sql 中常用时间处理函数  GETDATE()  返回当前的日期和时间 DATEPART()  返回日期/时间的单独部分 DATEADD()   返回日期中添加或减去指定的时间间隔 DATEDI ...

  2. SQL创建字段信息(表值函数)

    ALTER FUNCTION [dbo].[fnt_SplitString] ( @p1 varchar(Max), ) ) RETURNS @Table_Var TABLE ( c1 varchar ...

  3. sql 语句随机时间存储过程

    CREATE PROC [dbo].[Proc_GetRandomTime](@startTime datetime,@endTime datetime,@date datetime output ) ...

  4. sql产生随机时间

    --建立过程 CREATE PROCEDURE GetTime     @BeginTime VARCHAR(5),     @EndTime VARCHAR(5),     @RandTime VA ...

  5. 1、SQL可搜索可排序可分页存储过程, 2、范围内的随机时间 适用于sql 2008以上

    -- ============================================= -- Author: 蜘蛛王 -- Create date: 2015-10-29 -- Descri ...

  6. SQL 必备- ORACLE-SQSLSERVER-DB2时间函数及常见函数总结

    SQLSERVER 篇: 一.时间函数 --getdate 获取当前时间 select getdate() --dateadd 原有时间加: 2013-02-17 13:20:16 此时间加12个月 ...

  7. 第16课-数据库开发及ado.net-数据库SQl,创建数据库和表,增删改语句,约束,top和Distinct,聚合函数介绍

    第16课-数据库开发及ado.net 数据库SQl,创建数据库和表,增删改语句,约束,top和Distinct,聚合函数介绍 SQL语句入门(脚本.命令) SQL全名是结构化查询语言(Structur ...

  8. SQL存在一个表而不在另一个表中的数据, 更新字段为随机时间

    --更新字段为随机时间 86400秒=1天 UPDATE dl_robot ), ,GETDATE()) )   SQL存在一个表而不在另一个表中的数据   方法一 使用 not in ,容易理解,效 ...

  9. 数据库开发基础-SQl Server 聚合函数、数学函数、字符串函数、时间日期函数

    SQL 拥有很多可用于计数和计算的内建函数. 函数的语法 内建 SQL 函数的语法是: SELECT function(列) FROM 表 函数的类型 在 SQL 中,基本的函数类型和种类有若干种.函 ...

随机推荐

  1. 一个仿windows泡泡屏保的实现

    一个仿windows泡泡屏保的实现 有天看到有人在百度知道上问windows 泡泡屏保该怎么用C#做,一时有趣,就做了一个出来,对于其中几个要点总结如下: 一,屏保程序的制作要求 屏保程序的扩展名是. ...

  2. 【原创】O2O,你真的知道怎么玩吗?

    自从2011年8月份,O2O的概念被Alex Rampell提出,并且在当年的11月份被引入中国以来,O2O这一概念就好像给久无新意的中国互联网行业,打了一针兴奋剂.O2O这个词也如麦当劳,星巴克这些 ...

  3. MyISAM 和InnoDB 的区别.(存储,索引, 事务, 锁)

    MyISAM类型的表强调的是性能,但是不支持事务.及外部键等高级功能. MySQL默认采用的是MyISAM. MyISAM不支持事务,而InnoDB支持.InnoDB的AUTOCOMMIT默认是打开的 ...

  4. c# Newtonsoft.Json序列化和反序列 js解析

    Newtonsoft.Json下载地址:http://www.newtonsoft.com/products/json/ 参考:      http://www.cnblogs.com/yanweid ...

  5. nodejs中exports与module.exports的区别

    转自--http://www.cnblogs.com/pigtail/archive/2013/01/14/2859555.html 你肯定非常熟悉nodejs模块中的exports对象,你可以用它创 ...

  6. hihoCoder #1445 : 后缀自动机二·重复旋律5

    #1445 : 后缀自动机二·重复旋律5 时间限制:10000ms 单点时限:2000ms 内存限制:256MB 描述 小Hi平时的一大兴趣爱好就是演奏钢琴.我们知道一个音乐旋律被表示为一段数构成的数 ...

  7. COGS729. [网络流24题] 圆桌聚餐

    «问题描述:假设有来自m 个不同单位的代表参加一次国际会议.每个单位的代表数分别为ri(i=1,2,3...m), .会议餐厅共有n张餐桌,每张餐桌可容纳c i(i=1,2...n) 个代表就餐.为了 ...

  8. infragistics-webdatagrid

    infragistics-webdatagrid DataRow DataTable DataSet DataColumn stringBuilder append appendFormat 存储过程 ...

  9. Google Map API V3开发(1)

    Google Map API V3开发(1) Google Map API V3开发(2) Google Map API V3开发(3) Google Map API V3开发(4) Google M ...

  10. 浅谈Android中拍照、从相册选择图片并截图相关知识点

    前言 我们在Android开发中经常会需要使用相机或者从相册中选取图片的情况,今天就把这里面相关的知识点总结下,方便以后开发的时候使用. 1.相机拍照并可自定义截图功能 我们先来看如何使用Intent ...