如何在PL/SQL中生成年份为“1900”的随机日期?在特定年份生成随机日期
例如,我想在名为date_random的变量中生成包含1900年的日期。
我尝试了很多方法(DATEADD,DATEDIFF),但无法获得结果。请帮忙吗?
如何在PL/SQL中生成年份为“1900”的随机日期?在特定年份生成随机日期
例如,我想在名为date_random的变量中生成包含1900年的日期。
我尝试了很多方法(DATEADD,DATEDIFF),但无法获得结果。请帮忙吗?
像这样的东西可能工作?
declare @FromDate date = '1900-01-01'
declare @ToDate date = '1900-12-31'
select dateadd(day,
rand(checksum(newid()))*(1+datediff(day, @FromDate, @ToDate)),
@FromDate)
也许更多的东西一样:
SELECT DATEADD(DAY, ABS(CHECKSUM(NEWID()) % 365), '1900-01-01')
FROM your_table
这产生日期从1900-01-01
开始,你可以改变模值的天量,我把365
(1年),这种方法不会溢出。
我明白这个想法,但我想将这个随机日期保存为一个变量。例如,DECLARE date_random DATE。我没有成功,为了让它变成一个变量。 – zowie
这不是T-SQL吗?这个问题被标记为Oracle的PL/SQL。 –
试试这个:
DECLARE
l_date DATE;
BEGIN
l_date := TRUNC (SYSDATE, 'YYYY') +
ROUND (DBMS_RANDOM.VALUE (1, 365));
DBMS_OUTPUT.put_line (l_date);
/* And for a specific year */
l_date := TRUNC (DATE '1900-01-01', 'YYYY') +
ROUND (DBMS_RANDOM.VALUE (1, 365));
DBMS_OUTPUT.put_line (l_date);
END;
/
的DBMS_RANDOM进来非常方便!
伟大的解决方案!当然,如果你想让1月1日成为可能,你的低价值将需要为0而不是1。但是,这取决于你的确切要求。 –
试一试也是。纯SQL调整。希望这可以帮助。
SELECT TRUNC(to_date('01/01/'
||'&enter_year','mm/dd/yyyy'),'month')+ROUND(dbms_random.value(1,
CASE
WHEN mod('&enter_year',4) = 0
THEN 366
ELSE 365
END)) days
FROM dual;
没有来自https://www.google.cn/search?q=pl%2Fsql+random+date的建议? –