我想更新我的专栏dateStart
和dateEnd
。这些日期应该是两个日期之间的随机日期。
因此dateStart
的日期范围应为
2014-01-01至2018-01-01
和dateEnd
的日期范围应为
dateStart至2018-01-01
伪SQL:
UPDATE myTable
SET dateStart = RandomDateBetween('2014-01-01', '2018-01-01');
UPDATE myTable
SET dateEnd = RandomDateBetween(dateFrom, '2018-01-01');
答案 0 :(得分:2)
如果日期在1970年1月1日之后,您可以使用UNIX_TIMESTAMP
在两个时间戳之间生成随机时间戳。这也适用于闰年:
SELECT FROM_UNIXTIME(
UNIX_TIMESTAMP('2014-1-1') + FLOOR(
RAND() * (
UNIX_TIMESTAMP('2018-12-31') - UNIX_TIMESTAMP('2014-1-1') + 1
)
)
)
您可以将其设为名为RandomDateBetween
的功能,您的查询将起作用:
DELIMITER $$
CREATE FUNCTION RandomDateBetween (date_from DATE, date_to DATE)
RETURNS DATE
BEGIN
DECLARE result DATETIME;
SET result = (SELECT FROM_UNIXTIME(
UNIX_TIMESTAMP(date_from) + FLOOR(
RAND() * (
UNIX_TIMESTAMP(date_to) - UNIX_TIMESTAMP(date_from) + 1
)
)
));
RETURN DATE(result);
END$$
DELIMITER ;