【MySQL】生成随机手机号、随机时间方法

最近在进行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

测试结果
生成随机时间
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值