MySQL:使用随机日期或空值填充表

我想用过去的随机日期或Null值填充表中的列。我想将两个日期之间的随机日期设置为1920年1月1日至2018年12月1日,或者为NULL。

我遇到了一些令人困惑的代码,它们可能是在特定时间段内生成随机日期的解决方案,但它不能满足空值。

INSERT INTO `FootballPlayers` VALUES (SELECT timestamp('2010-04-30') - INTERVAL FLOOR( RAND( ) * 366) DAY);

我希望表的列具有类似的内容。

+----------------+
|  Date of Death |
+----------------+
|   20/10/1990   |
|   01/11/1988   |
|   04/02/2006   |
|      NULL      |
|   17/05/2011   |
|   22/04/1972   |
|      NULL      |
|      NULL      |
|   13/04/1989   |
|   10/03/1999   |
+----------------+
hd7429 回答:MySQL:使用随机日期或空值填充表

实际上,此查询不会获得任何null值,但是如果在此处使用一些case语句,则可以在此处获取此null。 我使用when-case语句并获得确切的结果。 您在这里:

SELECT 
CASE 
WHEN (SELECT FLOOR( RAND( ) * 366))  BETWEEN 50 AND 255 
THEN TIMESTAMP('2010-04-30') -INTERVAL FLOOR( RAND( ) * 366) DAY
ELSE NULL
END time_of_death

您也可以在插入语句中使用它。

,

您可以使用ELT()功能。

 SELECT ELT(N,MYRANDOMDATE) AS RANDOMDATE FROM 
        (SELECT TIMESTAMP('2010-04-30') - INTERVAL FLOOR( RAND( ) * 366) DAY AS MYRANDOMDATE,FLOOR(RAND()*(2-1+1))+1  AS N) AS FINAL

在这里,我正在生成1到2之间的随机数以及随机日期。我在ELT()函数中只提供了一个参数。当随机数为2时,它将为您提供NULL。您可以根据需要的NULL值的频率来调整此参数

Check demo here

本文链接:https://www.f2er.com/3153726.html

大家都在问