最近在进行MySQL优化的学习,过程中需要造各种不同类型的数据。目前需要使用到随机手机号以及随机时间的方法,网查查的都不算好用,现依靠网上提供的几种方案整理如下:
生成随机手机号
我国使用的手机号码为11位,其中每段编码代表含义不同:
前3位:网络识别号(运营商代码)
4到7位:归属地区代码
8到11位:用户代码
如有特必须要更改对应的head、content部分即可。
CREATE FUNCTION `generatePhone`() RETURNS char(11) CHARSET utf8
DETERMINISTIC
BEGIN
DECLARE head VARCHAR(100) DEFAULT '000,156,136,176,183';
DECLARE content CHAR(10) DEFAULT '0123456789';
DECLARE phone CHAR(11) DEFAULT substring(head, 1+(FLOOR(1 + (RAND() * 3))*4), 3);
DECLARE i int DEFAULT 1;
DECLARE len int DEFAULT LENGTH(content);
WHILE i<9 DO
SET i=i+1;
SET phone = CONCAT(phone, substring(content, floor(1 + RAND() * len), 1));
END WHILE;
RETURN phone;
END
测试结果
生成随机日期
下面代码是生成1990-01-01到2019-01-01之间的随机时间,如果需要请修改你要用的时间间隔即可。
SELECT
CONCAT(
(
SELECT
DATE(
FROM_UNIXTIME(
UNIX_TIMESTAMP('1990-01-01') + FLOOR(
RAND() * (
UNIX_TIMESTAMP('2019-01-01') - UNIX_TIMESTAMP('1990-01-01') + 1
)
)
)
) AS DATE
),
' ',
FLOOR(8 + RAND() * 10),
':',
FLOOR(10 + RAND() * 49),
':',
FLOOR(10 + RAND() * 49)
)
FROM
DUAL
测试结果