I need this procedure to generate 10M random timestamps but it has to use the current date each time it is called, how do i do this? I know that there's a CURRENT_TIMESTAMP() function, but I'm not sure how to implement it.
DELIMITER $$
CREATE PROCEDURE producer()
BEGIN
DECLARE a INT DEFAULT 0;
WHILE a < 10000000 DO
INSERT INTO CaseLog (`TIMESTAMP_IN`)
VALUES (FROM_UNIXTIME(UNIX_TIMESTAMP('2021-09-22 00:00:00') FLOOR(RAND()*86399))
);
SET a = a 1;
END WHILE;
END$$
DELIMITER ;
CodePudding user response:
Use CURRENT_DATE()
to get today's date, and use that instead of the hard-coded date.
DELIMITER $$
CREATE PROCEDURE producer()
BEGIN
DECLARE today_timestamp INT;
SET today_timestamp = UNIX_TIMESTAMP(CURRENT_DATE());
DECLARE a INT DEFAULT 0;
WHILE a < 10000000 DO
INSERT INTO CaseLog (`TIMESTAMP_IN`)
VALUES (FROM_UNIXTIME(today_timestamp FLOOR(RAND()*86400)));
SET a = a 1;
END WHILE;
END$$
DELIMITER ;
Also, you should multiply RAND()
by 86400
, not 86399
. The result of RAND()
is always less than 1.0
, so you don't have to worry that it will return 86400
.