Insertion de valeurs datetime aléatoires dans une plage spécifique dans MySQL
L'insertion de valeurs datetime aléatoires dans une plage spécifiée dans SQL peut être réalisée efficacement. Pour illustrer cela, examinons l'exemple fourni.
La plage donnée va du « 2010-04-30 14:53:27 » au « 2012-04-30 14:53:27 ». Cependant, la requête suggérée « INSERT INTO sometable VALUES (RND (DATETIME())) » générera des valeurs datetime aléatoires sans tenir compte de cette plage.
Pour résoudre ce problème, la requête suivante peut être utilisée :
INSERT INTO `sometable` VALUES( FROM_UNIXTIME( UNIX_TIMESTAMP('2010-04-30 14:53:27') + FLOOR(0 + (RAND() * 63072000)) ) )
Cette requête convertit efficacement la date de base (30/04/2010 14:53:27) en un horodatage Unix, puis ajoute un nombre aléatoire de secondes entre 0 et 2 ans à cet horodatage de base. Cet horodatage modifié est ensuite reconverti au format DATETIME, générant des valeurs datetime aléatoires dans la plage spécifiée.
Il est important de noter que même si cette méthode fournit une approximation du résultat souhaité, elle peut ne pas tenir compte des années bissextiles. ou d'autres ajustements liés à la date. Pendant des périodes prolongées, il est recommandé d'employer des techniques plus raffinées pour garantir l'exactitude.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!