如何在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的建議? –