Sql 我有日期函数来创建输入日期和创建随机时间,我想结合两者

Sql 我有日期函数来创建输入日期和创建随机时间,我想结合两者,sql,oracle,oracle11g,Sql,Oracle,Oracle11g,您好,亲爱的,我有一个查询,它为所提到的特定长度创建日期,还有一个查询,它是创建随机时间,希望将两者结合起来生成日期 它为特定长度创建日期,并插入到表查询中 insert into calendar_date2 with dates as ( select date'2019-12-31'+level dt from dual connect by level <= 365 ) select dt, case

您好,亲爱的,我有一个查询,它为所提到的特定长度创建日期,还有一个查询,它是创建随机时间,希望将两者结合起来生成日期 它为特定长度创建日期,并插入到表查询中

insert into calendar_date2  
with dates as (  
  select date'2019-12-31'+level dt  
  from   dual  
  connect by level <= 365  
)  
  select dt,   
         case   
           when to_char(dt, 'fmday') in ('sunday')   
           then 'N' else 'Y'  
         end  
  from dates
;
我想写两个查询一起工作,我写的是不适合我的,那就是

insert into calendar_date2  
with dates as (  
  select dates(to_date('01.01.2020 07:45', 'dd.mm.yyyy hh24:mi'))+level dt  
  from   dual
select start_date + round(dbms_random.value(1, 15)) / (24 * 60) result
 from test  
  connect by level <= 365  
)  
  select dt,   
         case   
           when to_char(dt, 'fmday') in ('sunday')   
           then 'N' else 'Y'  
         end  
  from dates
;
我写了这封信,但它对我不起作用。请在过去的几个小时里帮我写这封信。

您可以使用:

插入日历日期2 dt,即工作日 选择dt, 解码TRUNC dt-TRUNC dt'IW',6'N',Y' 从…起 选择日期“2020-01-01”+楼层标高-1/15 +楼层BMS_RANDOM.VALUE1,16*间隔“1”分钟 AS dt 来自双重 通过连接 日期'2020-01-01'+楼面标高-1/15 <添加月份日期'2020-01-01',12 表中的哪一项:

  dt         DATE
             NOT NULL,
  is_workday CHAR(1)
             NOT NULL
             CONSTRAINT calendar_date2__iwd__chk CHECK ( is_workday IN ( 'Y', 'N' ) )
);
为2020年的每一天提供15行,每行从午夜开始随机偏移1到15分钟

注:

一年中的天数是经过计算的,因此您不需要考虑闰年。 使用楼层DBMS_RANDOM.VALUE 1,16,而不是四舍五入DBMS_RANDOM.VALUE 1,15因为第一个会给你一个均匀的值分布,而第二个只会给你一个值1,当随机值在1和1.5之间,和一个值15在14.5和15之间,这两个值都会发生的频率只有其余数字的一半,并且会给你一个不平衡的分布。 您可以通过比较一天的开始时间TRUNC dt和ISO一周的开始时间TRUNC dt‘IW’来计算一周中的哪一天。这样做的好处是它独立于NLS设置,可以在所有语言中使用,而不仅仅限于英语国家。
dbfiddle

真棒的人工作了,我不需要每天15天,所以我删除了/15,它工作得很好,有可能我需要我的时间吗?意思是如果我需要随机的时间,从上午7:45到上午8:00,它给了我这个,并且想要创造条件,如果variableshift有值A,那么它从上午7:45到下午5:00开始,如果B为下午4:45到5:00请帮帮我@MTO@MTO我尝试将此选择日期改为“01.01.2020 07:45”,“dd.mm.yyyy hh24:mi”+楼层标高-1代替选定日期“2020-01-01”+楼层标高-1/15,但不包括worked@aws比如说?@MTO我多么感谢你相信我你不会认为我在这15天里一直在工作,但没有让你明白,我能说的太好了谢谢你u@MTO亲爱的朋友,我有一个名为EMPLOYEES,Pay_IN_u OUT和SHIFT_TIMINGS的表格,其中员工有一个员工ID 1,SHIFT和WEEKREST列,SHIFT_TIMINGS有一个列SHIFT和SHIFT start Time在表格Pay_IN_OUT有时间,employeer_ID1中,是工作日。亲爱的,我希望它选择员工id,weekrest和shift from employees,然后从轮班时间和weekrest中检查轮班时间,如果星期天比工作日晚,那么哪一个星期最早有提到的一天插入ino pay_in_,像这样10001,1/1/2020 7:55:00 AM,y是指in pay_in_in_员工id,datetime,是工作日,weekrest
  dt         DATE
             NOT NULL,
  is_workday CHAR(1)
             NOT NULL
             CONSTRAINT calendar_date2__iwd__chk CHECK ( is_workday IN ( 'Y', 'N' ) )
);