SQL 创建随机时间的函数
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 创建随机时间的函数的更多相关文章
- Sql 中常用时间处理函数
1.Sql 中常用时间处理函数 GETDATE() 返回当前的日期和时间 DATEPART() 返回日期/时间的单独部分 DATEADD() 返回日期中添加或减去指定的时间间隔 DATEDI ...
- SQL创建字段信息(表值函数)
ALTER FUNCTION [dbo].[fnt_SplitString] ( @p1 varchar(Max), ) ) RETURNS @Table_Var TABLE ( c1 varchar ...
- sql 语句随机时间存储过程
CREATE PROC [dbo].[Proc_GetRandomTime](@startTime datetime,@endTime datetime,@date datetime output ) ...
- sql产生随机时间
--建立过程 CREATE PROCEDURE GetTime @BeginTime VARCHAR(5), @EndTime VARCHAR(5), @RandTime VA ...
- 1、SQL可搜索可排序可分页存储过程, 2、范围内的随机时间 适用于sql 2008以上
-- ============================================= -- Author: 蜘蛛王 -- Create date: 2015-10-29 -- Descri ...
- SQL 必备- ORACLE-SQSLSERVER-DB2时间函数及常见函数总结
SQLSERVER 篇: 一.时间函数 --getdate 获取当前时间 select getdate() --dateadd 原有时间加: 2013-02-17 13:20:16 此时间加12个月 ...
- 第16课-数据库开发及ado.net-数据库SQl,创建数据库和表,增删改语句,约束,top和Distinct,聚合函数介绍
第16课-数据库开发及ado.net 数据库SQl,创建数据库和表,增删改语句,约束,top和Distinct,聚合函数介绍 SQL语句入门(脚本.命令) SQL全名是结构化查询语言(Structur ...
- SQL存在一个表而不在另一个表中的数据, 更新字段为随机时间
--更新字段为随机时间 86400秒=1天 UPDATE dl_robot ), ,GETDATE()) ) SQL存在一个表而不在另一个表中的数据 方法一 使用 not in ,容易理解,效 ...
- 数据库开发基础-SQl Server 聚合函数、数学函数、字符串函数、时间日期函数
SQL 拥有很多可用于计数和计算的内建函数. 函数的语法 内建 SQL 函数的语法是: SELECT function(列) FROM 表 函数的类型 在 SQL 中,基本的函数类型和种类有若干种.函 ...
随机推荐
- MySQL大小写补坑记
背景:由于项目开始时数据库设计经验不足,数据库名和部分数据表名都含有大写字母.但问题是,Linux上数据库名和表名是区分大小写的,而Windows上是不区分大小写的.结果就是在看本地的数据库的时候,对 ...
- 51Nod-1091 线段的重叠
51Nod 1091: http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1091 1091 线段的重叠 基准时间限制: ...
- 关于SQL中的排序问题
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE generatorConfiguratio ...
- 剑指offer 面试题65 滑动窗口的最大值
import java.awt.print.Printable; import java.beans.VetoableChangeListenerProxy; import java.lang.ref ...
- 使用canvas绘制一片星空
效果图 五角星计算方式 代码 <body style="margin:0px;padding:0px;width:100%;height:100%;overflow:hidden;&q ...
- C#安全性记录
安全性一直是开发中,重中之重的问题.不过平时用的不算特别多,基本上用个MD5,SSL也就到这了.再次记录一下,以免忘记. MD5多次加密 MD5算法是不可逆算法.应用于密码验证,完整性验证这种特征.这 ...
- C#把DataTable中数据一次插入数据库的方法
现在实际的情况是这样的: 客户有一台打卡机,员工打卡的信息全部储存在打卡机的Access数据库里面,现在客户引入了一种新的管理系统,需要将Access数据库中的打卡数据同步到SQL Server数据库 ...
- <<< web里面Servlet高级应用的基础介绍
Servlet中的页面跳转?两种方式,实现跳转:内部跳转(请求转发).外部跳转(重定向)内部跳转(请求转发)特点:在服务器内部完成页面之间的跳转:请求只有一次:浏览器地址不会改变.request.ge ...
- <<< java异常The import java.util cannot be resolved
异常:The import java.util cannot be resolved 原因:这是由于你的项目buildpath不对 解决方案:右键项目-------buildpath--------最 ...
- HDU 5167(map + 暴力)
题意:给出一个数n,问n能否是斐波那契数列中数的乘积 先刷选 斐波那契数列,然后就枚举 #include <cstdio> #include <cstring> #includ ...